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

PHP $_SERVER 超全域變數完整參考手冊(含實務用途)

     編輯:PHP 綜合知識

核心變數分類速查表

變數名說明實務用途
PHP_SELF當前執行腳本路徑(相對 DocumentRoot)表單 action、分頁連結
argv命令列參數陣列CLI 腳本參數解析
argc命令列參數個數CLI 參數檢查
GATEWAY_INTERFACECGI 規範版本(如 CGI/1.1)環境相容性檢查
SERVER_NAME伺服器主機名生成絕對 URL、多站點識別
SERVER_SOFTWARE伺服器軟體標識(Apache/2.4...)相容性判斷、診斷日誌
SERVER_PROTOCOL請求協議(HTTP/1.1、HTTP/2)HTTP/2 推送判斷
REQUEST_METHOD請求方法(GET/POST/PUT/DELETE)RESTful 路由分發
QUERY_STRING查詢字串(? 後內容)分頁保持參數、簽名驗證
DOCUMENT_ROOT文檔根目錄絕對路徑檔案包含路徑基準
HTTP_ACCEPTAccept 標頭內容協商(JSON/HTML/XML)
HTTP_ACCEPT_CHARSETAccept-Charset編碼協商
HTTP_ACCEPT_ENCODINGAccept-Encoding(gzip, deflate, br)響應壓縮判斷
HTTP_ACCEPT_LANGUAGEAccept-Language(zh-TW,en;q=0.9)多語系自動切換
HTTP_CONNECTIONConnection(keep-alive, close)長連接管理
HTTP_HOSTHost 標頭(含端口)生成完整域名、防 Host 注入
HTTP_REFERER來源頁面 URL(可偽造)防盜鏈、來源統計(僅參考)
HTTP_USER_AGENTUser-Agent 字串裝置識別、瀏覽器兼容、爬蟲識別
HTTPS非空表 HTTPS(通常 'on')強制 HTTPS 判斷、生成安全連結
REMOTE_ADDR客戶端 IP(可能為代理)限流、地理定位、風控
REMOTE_HOST客戶端主機名(需 DNS 反解)極少用,效能差
REMOTE_PORT客戶端連接埠連接追蹤、日誌關聯
SCRIPT_FILENAME當前腳本絕對路徑require_once 路徑基準、效能分析
SERVER_ADMIN管理員 Email(Apache 設定)錯誤通知收件人
SERVER_PORT伺服器監聽埠(80/443/其他)生成正確連結、非標準埠處理
SERVER_SIGNATURE伺服器版本與虛擬主機資訊錯誤頁面頁尾
PATH_TRANSLATED腳本在檔案系統的實際路徑CGI 模式下路徑映射
SCRIPT_NAME當前腳本路徑(含前導 /)自我引用 URL、路由匹配基準
REQUEST_URI完整請求 URI(含查詢字串)路由解析、重寫規則、日誌記錄
PHP_AUTH_USERHTTP Basic Auth 用戶名簡易認證、API 金鑰驗證
PHP_AUTH_PWHTTP Basic Auth 密碼同上
AUTH_TYPE認證類型驗證機制識別

常見陷阱與注意事項

  1. 不可信任:所有 HTTP_* 變數來自客戶端請求標頭,可任意偽造(含 HTTP_REFERER、HTTP_X_FORWARDED_FOR、HTTP_USER_AGENT)。
  2. 大小寫與下劃線:鍵名固定為大寫下劃線,$_SERVER['http_host'] 會取不到值。
  3. CLI 模式差異:CLI 下無 REQUEST_URI、HTTP_HOST 等 Web 專用變數,但有 argv/argc。
  4. 代理環境:REMOTE_ADDR 為代理 IP,真實 IP 需配合 Web Server real_ip 模組或應用層解析 X-Forwarded-For。

實務工具函數

// 取得完整當前 URL
function current_url(): 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;
}

// 判斷是否 AJAX 請求
function is_ajax(): bool {
    return (isset($_SERVER['HTTP_X_REQUESTED_WITH'])
        && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');
}

// 判斷是否 HTTPS
function is_https(): bool {
    return (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
        || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https');
}

結語

$_SERVER 是 PHP 與 Web Server 互動的核心介面,熟悉各變數含義與陷阱,能寫出更健壯、可移植的應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved