在 PHP 中獲取當前完整的 URL

Krissnaawat Kaewsanmuang 2024年2月16日
PHP
  1. 在 PHP 中使用 http_build_url() 獲取當前的 Url
  2. 在 PHP 中使用 $_SERVER[] 來獲取當前的 URL
  3. 在 PHP 中使用 $_SERVER['HTTPS'] 來獲取當前的 URL
  4. 在 PHP 中獲取包括引數的當前 URL
  5. 結束語
在 PHP 中獲取當前完整的 URL

本教程介紹瞭如何在 PHP 程式語言中獲取當前的完整 URL。獲取 PHP 的完整 URL 可以有很多用例。我們要根據查詢引數渲染出網頁的內容。我們可能需要重定向或重新整理整個頁面。因此,當涉及到網頁程式設計時,一個完整的 URL 可以是必不可少的價值。

在這裡,我們將討論在 PHP 程式設計中獲得完整 URL 的不同方法。

一般來說,有幾個步驟是我們必須知道的,以獲得當前正在執行的頁面的完整 URL,下面給出。

  • 我們需要建立一個 PHP 變數,以字串格式儲存 URL。
  • 我們需要檢查伺服器是否啟用了 HTTPS。如果啟用了,那麼我們需要在 URL 字串中附加 HTTPS。如果沒有啟用 HTTPS,我們需要在 URL 字串中追加 HTTP
  • 我們還需要將://符號追加到 URL 中。
  • 我們需要追加伺服器的 HTTP_HOST 名。HTTP_HOST 名就是我們所請求的主機,例如 www.google.comwww.exampledomain.com 等。
  • 我們需要在 URL 字串上追加 REQUEST_URI。REQUEST_URI 是我們請求的資源,例如/index.php 等。

現在,我們討論一下 PHP 程式設計生態中最有效的獲取當前完整 URL 的方法。

在 PHP 中使用 http_build_url() 獲取當前的 Url

這個解決方案非常簡單。我們可以使用 PHP 內建函式,名為 http_build_url()。這個方法對 HTTP 和 HTTPs 都有效。

$link =  http_build_url();

這個函式用來建立一個 URL。它總共接受四個引數。

  • url。這個引數以字串或關聯陣列的形式表示 URL。它的返回值類似於 parse_url()
  • parts:這個引數和第一個引數一樣。該引數與第一個引數相同。
  • flags:這個引數與第一個引數相同。是二進位制 HTTP_URL 常量的位掩碼。
  • new_url。如果設定了這個引數,就會像 parse_url() 返回的那樣,用組成的 URL 的部分來填充。

總的來說,這個方法在成功的時候會以字串的形式返回新的 URL,否則失敗的時候會返回 False

在 PHP 中使用 $_SERVER[] 來獲取當前的 URL

另一種方法是使用全域性變數 $_SERVER[]$_SERVER 是 PHP 的一個內建變數,用來獲取當前頁面的 URL。它也是一個超全域性變數。因此,它在所有範圍內都是可用的。

我們只需將引數 REQUEST_URI 傳遞給這個變數,如下例所示。

例子:

$link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
  • $_SERVER[HTTP_HOST] 代表主機名或域名,如 https://www.delftstack.com/
  • $_SERVER[REQUEST_URI] 代表 URI 如/dashboard/phpinfo.php

在 PHP 中使用 $_SERVER['HTTPS'] 來獲取當前的 URL

這裡是另一種明確的硬程式碼格式,在 PHP 中獲取當前的 URL。

全域性變數 $_SERVER['HTTPS'] 代表 HTTPS 的狀態。因此,我們可以在 isset() 函式中使用它來檢查 HTTPS 是否存在。這將幫助我們知道一個 URL 中是否啟用了 HTTPS。同時,通過檢查 $_SERVER['HTTPS'] 的值,我們可以決定是否在 URL 中新增 “https”。

這兩個例子都顯示了 HTTPS 的檢測。下面的例子是長格式。

$link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

或者你也可以使用下面例子中的短格式。

$link = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']

在 PHP 中獲取包括引數的當前 URL

為了得到包括路徑、引數和查詢字串在內的整體 URL,我們可以使用 http_build_url(),如下例所示。

$all_in_address_bar = http_build_url();

結束語

本教程演示了在 PHP 程式設計中獲取當前 URL 的一些最有效的方法。這些例子肯定會幫助你理解其中的格式、機制和語法。最常用的獲取當前 URL 的技術是使用超級全域性變數 $_SERVER。使用這個,你可以完全控制語法格式。然而,這個技術與其他技術相比有點複雜。現在,你可以根據你的 PHP 程式設計方案來決定哪種獲取當前 URL 的方法最合適。在使用一個特定的方法時,可能會有不同的使用情況和效率。最好的選擇可能是嘗試每一種方法,然後選擇最靈活和最有效的方法來滿足你的程式設計方案。