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

PHP $_SERVER 伺服器變數完整解析與實務應用指南

     編輯:PHP 相關知識

$_SERVER 是 PHP 中最重要的超全域變數之一,包含了伺服器環境、請求資訊與執行上下文等關鍵資料。本文系統整理 32 個常用鍵值的用途與範例。

腳本與請求基礎資訊

變數說明範例值
PHP_SELF目前執行腳本的檔案名/index.php
REQUEST_METHOD請求方法GET、POST、PUT
REQUEST_TIME請求開始時間戳 (PHP 5.1.0+)1699900000
QUERY_STRINGURL 查詢字串id=123&name=test
REQUEST_URI完整請求 URI/index.php?id=123
SCRIPT_FILENAME腳本絕對路徑/var/www/html/index.php
SCRIPT_NAME腳本路徑 (含檔名)/index.php

伺服器環境資訊

變數說明範例值
SERVER_NAME主機名稱example.com
SERVER_SOFTWARE伺服器軟體識別Apache/2.4.41
SERVER_PROTOCOL通訊協定版本HTTP/1.1
SERVER_PORT伺服器連接埠80、443
SERVER_ADMIN管理員郵件 (Apache 設定)admin@example.com
SERVER_SIGNATURE伺服器版本與虛擬主機資訊Apache/2.4.41 Server at...
DOCUMENT_ROOT文件根目錄/var/www/html

客戶端與網路資訊

變數說明範例值
REMOTE_ADDR客戶端 IP192.168.1.100
REMOTE_HOST客戶端主機名 (需反向解析)client.example.com
REMOTE_PORT客戶端連接埠54321
HTTP_USER_AGENT瀏覽器識別字串Mozilla/5.0...
HTTP_REFERER來源頁面 URLhttps://google.com/
HTTP_HOST請求的 Host 標頭example.com:8080
HTTPS是否為 HTTPS 連線on / off

HTTP 標頭資訊 (HTTP_* 開頭)

所有 HTTP 請求標頭會自動轉換為 HTTP_ 前綴、大寫、底線格式:

  • HTTP_ACCEPT - 可接受的內容型態
  • HTTP_ACCEPT_CHARSET - 可接受字元集
  • HTTP_ACCEPT_ENCODING - 可接受編碼 (gzip, deflate)
  • HTTP_ACCEPT_LANGUAGE - 可接受語言
  • HTTP_CONNECTION - 連線類型 (keep-alive)
  • HTTP_COOKIE - Cookie 內容

HTTP 認證相關

變數說明
PHP_AUTH_USERHTTP 認證用戶名
PHP_AUTH_PWHTTP 認證密碼
PHP_AUTH_DIGESTDigest 認證的 Authorization 標頭
AUTH_TYPE認證類型 (Basic/Digest)

實務應用範例

// 取得客戶端真實 IP (考慮代理)
function getClientIP() {
    $keys = ['HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP', 'REMOTE_ADDR'];
    foreach ($keys as $key) {
        if (!empty($_SERVER[$key])) {
            $ips = explode(',', $_SERVER[$key]);
            return trim($ips[0]);
        }
    }
    return 'unknown';
}

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

// 建立完整 URL
function getFullUrl() {
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
    return $protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
}

安全性提醒

  • 不可信任:HTTP_REFERER、HTTP_USER_AGENT、HTTP_X_FORWARDED_FOR 等客戶端可偽造
  • 較可信:REMOTE_ADDR、REQUEST_METHOD、SERVER_* 等伺服器端變數
  • 輸出前務必使用 htmlspecialchars() 防止 XSS
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved