URL in PHP

When using the http_build_query function to create a URL query from an array for use in something like curl_setopt($ch, CURLOPT_POSTFIELDS, $post_url), be careful about the url encoding.

In my case, I simply wanted to pass on the received $_POST data to a CURL's POST data, which requires it to be in the URL format.  If something like a space [ ] goes into the http_build_query, it comes out as a +. If you're then sending this off for POST again, you won't get the expected result.  This is good for GET but not POST.

Instead you can make your own simple function if you simply want to pass along the data:

$post_url = '';
foreach ($_POST AS $key=>$value)
    $post_url .= $key.'='.$value.'&';
$post_url = rtrim($post_url, '&');
?>

You can then use this to pass along POST data in CURL.

    $ch = curl_init($some_url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_url);
    curl_exec($ch);
?>

Note that at the final page that processes the POST data, you should be properly filtering/escaping it.

Trong bài viết tập trung vào PHP này, chúng ta sẽ khám phá cách lấy URL của trang hiện tại bằng ngôn ngữ lập trình PHP

Bạn có thể muốn lấy URL trang hiện tại vì những lý do sau

  • Xây dựng liên kết nội bộ
  • Sử dụng bộ lọc với yêu cầu GET, ví dụ: currentURL. com?myFilterParameter=Thức ăn

PHP thực sự lưu trữ nhiều thông tin hữu ích khi người dùng điều hướng ứng dụng web của bạn. Tất nhiên, một trong số đó là URL hiện tại

PHP lưu trữ những mẩu thông tin hữu ích này trong mảng các biến siêu toàn cục của nó

Siêu toàn cầu là gì?

Superglobals là các biến đã được xác định bởi công cụ PHP có thể được sử dụng trong bất kỳ loại phạm vi nào. Chúng có sẵn bất cứ lúc nào

Có rất nhiều siêu toàn cầu trong số này, nhưng cái mà chúng ta quan tâm là siêu toàn cầu $_SERVER

$_SERVER Superglobal

Biến siêu toàn cục $_SERVER có nhiều thuộc tính có thể truy cập được bằng chỉ mục kiểu kết hợp.  

Một số giá trị chúng ta có thể truy cập bao gồm

  • HTTP_USER_AGENT
  • HTTP_HOST
  • HTTP_ACCEPT_ENCODING
  • HTTP_ACCEPT

Bạn có thể xem thêm các chỉ số này trong tài liệu PHP tại đây

Vì vậy, làm thế nào để chúng tôi có được URL đầy đủ?

Với những điểm trên về siêu toàn cầu và lưu ý đến siêu toàn cầu $_SERVER, chúng ta có thể tiếp tục và lấy URL của trang hiện tại

Trong ảnh chụp màn hình sau đây, tôi đã hiển thị ứng dụng PHP trong môi trường cục bộ trên trang có tên "home. "

URL in PHP

URL là http. //máy chủ cục bộ/nhà

Trong cơ sở mã của trang này, tôi sẽ sử dụng biến $_SERVER

Với biến này, chúng ta sẽ phải sử dụng 2 chỉ số riêng biệt để lấy từng phần của URL của trang hiện tại. Phần đầu tiên sẽ là host, localhost, và phần thứ hai sẽ là tên trang, home

Chỉ mục đầu tiên chúng tôi sẽ sử dụng là HTTP_HOST - Máy chủ lưu trữ địa chỉ web hiện tại, ví dụ localhost hoặc ví dụ. com

Thứ hai là REQUEST_URI sẽ cung cấp cho chúng tôi một phần của URL sau máy chủ lưu trữ, vì vậy đây là bất kỳ thứ gì sau localhost hoặc ví dụ. com

Hãy xem điều này trong hành động

$currentPageUrl = 'http://' . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];


echo "Current page URL " . $currentPageUrl;

đầu ra

URL in PHP

Và đó là nó - khá đơn giản

Tóm lược

Biến siêu toàn cầu $_SERVER lưu trữ rất nhiều thông tin quan trọng cho các trường hợp sử dụng hiện đại. Như chúng tôi đã phát hiện ra trong trường hợp này, việc lấy URL của trang hiện tại trở nên đơn giản với khả năng truy cập vào biến cụ thể này

Tuy nhiên, bạn nên kiểm tra tài liệu để xem những chỉ số nào khác có sẵn, vì bạn nên nhớ rằng biến này có thể hữu ích như thế nào

Tôi hy vọng bạn thích bài viết này. Nếu bạn đã làm, vui lòng kiểm tra blog của tôi, https. //www. tường mã. đồng. anh/

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO


URL in PHP
Dan Englishbởi

Tôi viết bài hướng dẫn và kỹ thuật thường xuyên. Tôi thích trực quan hóa dữ liệu, tự động hóa mọi thứ và nói chung là mọi thứ về mã


Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Superglobal VariablesPurposes$_SERVER[‘HTTPS’]Nó trở lại nếu giao thức HTTPS được sử dụng trong URL của trang hiện tại. $_SERVER[‘HTTP_HOST’]Trả về tên của máy chủ của trang hiện tại. $_SERVER[‘REQUEST_URI’]Nó trả về tên tài nguyên được yêu cầu. $_SERVER[‘SERVER_PORT’]Nó trả về số cổng của máy chủ. $_SERVER[‘QUERY_STRING’]Nó trả về giá trị chuỗi truy vấn nếu nó tồn tại trong địa chỉ URL của trang hiện tại

ví dụ 1. Hiển thị URL của trang hiện tại bằng câu lệnh có điều kiện

Ví dụ sau đây cho thấy cách câu lệnh điều kiện có thể được sử dụng để lấy giao thức được sử dụng trong URL của trang hiện tại. Tạo một tệp PHP với tập lệnh sau

Giá trị của $_SERVER[‘HTTP_HOST’] được sử dụng để lấy tên miền của URL hiện tại. Giá trị của $_SERVER[‘REQUEST_URI’] được sử dụng để lấy tên của tài nguyên được yêu cầu. Hàm isset() được sử dụng để kiểm tra xem $_SERVER[‘HTTPS’] có được đặt hay không và nếu được đặt thì hãy kiểm tra giá trị của $_SERVER[‘HTTPS’] có được bật hay không. Tiếp theo, giá trị của ba biến này được kết hợp với ‘//. ’ để truy xuất toàn bộ URL của trang hiện tại

// Đọc tên miền của trang hiện tại$domain=". //". $domain. $resource;// In địa chỉ URL của trang hiện tạiecho . blue'>Địa chỉ URL của tranghiện tại là. ". $url;?>
// Read the domain name of the current page
$domain = $_SERVER['HTTP_HOST'];
//Read the requested resource
$resource = $_SERVER['REQUEST_URI'];
// Find out the protocol of the current url
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')
$protocol = "https";
else
$protocol = "http";

// Combine all parts to get the full URL address
$url = $protocol."://".$domain.$resource;
// Print the URL address of the current page
echo "

The URL address of the currentpage is :

". $url;?>

đầu ra

Đầu ra sau sẽ xuất hiện sau khi chạy tập lệnh từ máy chủ. Giá trị của $_SERVER[‘HTTPS’] không được bật cho máy chủ cục bộ. Vì vậy, đầu ra hiển thị giao thức http cho URL hiện tại

URL in PHP

ví dụ 2. Hiển thị URL của trang hiện tại bằng toán tử bậc ba

Ví dụ sau đây cho thấy cách lấy URL đầy đủ của trang hiện tại bằng toán tử bậc ba. Tạo một tệp PHP với tập lệnh sau

Nếu điều kiện được sử dụng trong ví dụ trước để tìm ra giao thức nào được sử dụng trong URL của trang hiện tại. Nhiệm vụ tương tự được thực hiện bằng cách sử dụng toán tử bậc ba trong tập lệnh này. Hàm isset() được sử dụng để kiểm tra xem $_SERVER['HTTPS'] có phải là một tập hợp hay không và nếu giá trị của $_SERVER['HTTPS'] được bật, thì toán tử bậc ba sẽ trả về HTTPS, nếu không, nó sẽ trả về . Các phần khác của URL được truy xuất và in giống như ví dụ trước

// Tìm hiểu giao thức của url hiện tại$protocol="http");// Đọc tên miền hiện tại . ". //". $domain. $resource;// In địa chỉ URL của trang hiện tạiecho . red'>Địa chỉ URL của trang hiện tại là. ". $url;?>
// Find out the protocol of the current url
$protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']
== 'on' ? "https" : "http");
// Read the domain name of the current page
$domain =  $_SERVER['HTTP_HOST'];
//Read the requested resource
$resource = $_SERVER['REQUEST_URI'];
// Combine all parts to get the full URL address
$url = $protocol."://".$domain.$resource;
// Print the URL address of the current page
echo "

The URL address of the current page is :

". $url;
?>

đầu ra

Đầu ra sau sẽ xuất hiện sau khi chạy tập lệnh từ máy chủ. Giá trị của $_SERVER[‘HTTPS’] không được bật cho máy chủ cục bộ. Vì vậy, đầu ra hiển thị giao thức HTTP cho URL hiện tại

URL in PHP

ví dụ 3. Hiển thị URL của trang hiện tại dựa trên số cổng

Trong hai ví dụ trước, giá trị của $_SERVER[‘HTTPS’] được sử dụng để tìm ra giao thức của URL hiện tại của trang và không có chuỗi truy vấn nào được sử dụng với URL. Ví dụ sau đây cho thấy cách biến $_SERVER[‘SERVER_PORT’] có thể được sử dụng để tìm ra giao thức và truy xuất địa chỉ URL đầy đủ bằng chuỗi truy vấn. Tạo một tệp PHP với tập lệnh sau

Ở đây, nhiều điều kiện logic và toán tử bậc ba được sử dụng để tìm ra giao thức. Nếu giá trị của $_SERVER[‘HTTPS’] trống hoặc được đặt thành tắt, thì nó sẽ kiểm tra giá trị của $_SERVER[‘SERVER_PORT’] để tìm ra giao thức của URL hiện tại. Biến $_SERVER[‘QUERY_STRING’] được sử dụng để truy xuất giá trị chuỗi truy vấn từ URL

// Tìm hiểu giao thức của url hiện tại$protocol=trống($_SERVER[ . ='tắt'). $_SERVER['SERVER_PORT']. "http. //";// Đọc tên miền của trang hiện tại$domain$domain. $resource;// In địa chỉ URL của trang hiện tạiecho . green'>Địa chỉ URL đầy đủ của trang hiện tại là. ". $url;// In phần chuỗi truy vấnechoChuỗi truy vấn là. ". $query;?>
// Find out the protocol of the current url
$protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS']
!= 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
// Read the domain name of the current page
$domain =  $_SERVER['HTTP_HOST'];
// Read the requested resource
$resource = $_SERVER['REQUEST_URI'];
// Read the query string value
$query = $_SERVER['QUERY_STRING'];
// Combine all parts to get the full URL address
$url = $protocol.$domain.$resource;
// Print the URL address of the current page
echo "

The full URL address of the current page is :

". $url;
// Print the query string part
echo "

The query string is :

"
. $query;
?>

đầu ra

Đầu ra sau sẽ xuất hiện sau khi thực thi tập lệnh trên từ máy chủ mà không có bất kỳ chuỗi truy vấn nào. Không có chuỗi truy vấn nào được cung cấp trong URL. Vì vậy, đầu ra hiển thị chuỗi truy vấn trống

URL in PHP

Đầu ra sau sẽ xuất hiện sau khi thực thi đoạn mã trên từ máy chủ với chuỗi truy vấn. Đầu ra sau hiển thị địa chỉ URL với chuỗi truy vấn và chuỗi truy vấn riêng biệt

Phần kết luận

Các cách khác nhau để truy xuất URL đầy đủ của trang hiện tại được hiển thị trong hướng dẫn này bằng cách sử dụng các ví dụ khác nhau. Cách tách URL và chuỗi truy vấn cũng được trình bày trong hướng dẫn này. Hy vọng với hướng dẫn này sẽ giúp bạn đọc biết cách đọc toàn bộ URL của trang hiện tại bằng PHP script

Làm cách nào để in URL trong PHP?

Để lấy URL của trang hiện tại, PHP cung cấp một biến siêu toàn cầu $_SERVER. $_SERVER là một biến có sẵn của PHP, được sử dụng để lấy URL của trang hiện tại. .
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'bật')
// Nối host(tên miền, ip) vào URL

Làm cách nào để in các tham số URL trong PHP?

Các tham số từ một chuỗi URL có thể được truy xuất trong PHP bằng cách sử dụng các hàm parse_url() và parse_str() .

Làm cách nào tôi có thể nhận URL hiện tại trong PHP?

Các biến siêu toàn cầu cần thiết như $_SERVER['HTTPS'], $_SERVER['REQUEST_URI'], $_SERVER['SERVER_PORT'] are used to get full URL in PHP. The variable HTTPS can easily retrieve the protocol in the URL of a webpage. If it returns a value “on”, then the protocol is HTTPS.

Làm cách nào để trích xuất tất cả URL từ trang web bằng PHP?

Tập lệnh PHP để trích xuất URL từ trang web .
Bước 1. Tạo một biến để lưu URL nguồn. .
Bước 2. Đọc nguồn bằng hàm file_get_contents(). .
Step 3: Strip all tags except .. .
Bước 4. Sử dụng preg_split() để tách một chuỗi thành các chuỗi con. .
Bước 5. Lặp qua mảng kết hợp và in các liên kết