首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 取得完整 URL 與各部件的 $_SERVER 變數總整理

     編輯:PHP 相關知識

常用 $_SERVER 變數速查

變數說明範例
HTTP_HOST域名/主機位址 (含端口若非 80/443)localhost / www.example.com:8080
PHP_SELF當前腳本路徑 (相對 DocumentRoot)/blog/test.php
QUERY_STRING查詢字串 (問號後內容)id=5&page=2
HTTP_REFERER來源頁面 URL (可偽造/為空)https://google.com/search?q=php
REQUEST_URI完整請求 URI (含查詢字串)/blog/test.php?id=5
SERVER_NAME伺服器主機名 (由 Apache 設定決定)www.example.com
SERVER_PORT伺服器通訊埠80 / 443 / 8080
HTTPS是否為 HTTPS 連線 (on/off)on

組合完整 URL 範例

<?php
// 1. 簡易版 (忽略 HTTPS/非標準埠)
echo 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

// 2. 完整版 (支援 HTTPS、非標準埠)
function curPageURL() {
    $pageURL = 'http';
    if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') $pageURL .= 's';
    $pageURL .= '://';
    if ($_SERVER['SERVER_PORT'] != '80') {
        $pageURL .= $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'];
    } else {
        $pageURL .= $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
    }
    return $pageURL;
}
echo curPageURL();

// 3. 僅取目錄路徑
$url = 'https://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
echo dirname($url); // 輸出不含檔名的目錄
?>

常見陷阱

  • HTTP_HOST 可能包含端口,SERVER_NAME 不含端口但依賴 Apache ServerName 設定。
  • 反向代理 (Nginx/Cloudflare) 後 REMOTE_ADDR、HTTP_HOST 可能不準,需讀取 HTTP_X_FORWARDED_FOR、HTTP_X_FORWARDED_HOST。
  • REQUEST_URI 包含查詢字串,PHP_SELF 不含。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved