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

PHP 取得網址列資訊完整速查表 ($_SERVER 變數)

     編輯:PHP 綜合知識

常用 $_SERVER 變數對照

變數說明範例
HTTP_HOST客戶端請求的 Host 標頭 (含港口)example.com:8080
SERVER_NAME伺服器設定的主機名 (Apache ServerName)example.com
REQUEST_URI完整請求 URI (含查詢字串)/path/page.php?id=1&k=2
PHP_SELF當前腳本路徑 (相對 DocumentRoot)/path/page.php
SCRIPT_NAME同 PHP_SELF,但較標準/path/page.php
QUERY_STRING查詢字串 (不含 ?)id=1&k=2
REQUEST_METHODHTTP 方法GET, POST
HTTPS是否 HTTPS (on/off 或 1/0)on
HTTP_REFERER來源頁面 (不可靠,可偽造)https://google.com/search?q=php
HTTP_USER_AGENT客戶端 UA 字串Mozilla/5.0...
REMOTE_ADDR客戶端 IP (經 Proxy 需看 X-Forwarded-For)203.0.113.45
SERVER_ADDR伺服器 IP192.168.1.10
SERVER_PORT伺服器埠號80, 443
DOCUMENT_ROOT網站根目錄絕對路徑/var/www/html

實用組合函數

function getCurrentUrl(): string {
    $scheme = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
    $host   = $_SERVER['HTTP_HOST'] ?? $_SERVER['SERVER_NAME'];
    $uri    = $_SERVER['REQUEST_URI'] ?? '';
    return $scheme . '://' . $host . $uri;
}

function getBaseUrl(): string {
    $scheme = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
    $host   = $_SERVER['HTTP_HOST'] ?? $_SERVER['SERVER_NAME'];
    return $scheme . '://' . $host;
}

function getClientIp(): string {
    $headers = ['HTTP_X_FORWARDED_FOR', 'HTTP_X_REAL_IP', 'HTTP_CLIENT_IP'];
    foreach ($headers as $h) {
        if (!empty($_SERVER[$h])) {
            $ips = explode(',', $_SERVER[$h]);
            return trim($ips[0]);
        }
    }
    return $_SERVER['REMOTE_ADDR'] ?? 'unknown';
}

安全提醒

  • 不可信任 `HTTP_REFERER`、`HTTP_X_FORWARDED_FOR` 等客戶端可控標頭,僅作參考/日誌。
  • 反向代理 (Nginx/Cloudflare) 後需設定 `real_ip_header` / `set_real_ip_from` 並信任代理 IP,PHP 才能正確取得真實 IP。
  • `PHP_SELF` 直接輸出到表單 `action` 易受 XSS,務必 `htmlspecialchars()`。

除錯技巧

<?php
// 快速查看所有 $_SERVER
echo '<pre>';
print_r($_SERVER);
echo '</pre>';
?>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved