global 聲明)$HTTP_*_VARS 數組$x = 75; $y = 25;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; // 直接操作全局變量
}
addition();
echo $z; // 100
$GLOBALS['var'] 等價於全局作用域 $var$GLOBALS['GLOBALS'] === $GLOBALS由 Web 服務器 (Apache/Nginx/PHP-FPM) 填充,常用項:
| 鍵名 | 含義 | 示例 |
|---|---|---|
| PHP_SELF | 當前腳本路徑 (相對 DocumentRoot) | /index.php |
| SERVER_NAME | 服務器主機名 | www.example.com |
| HTTP_HOST | 請求 Host 頭 | www.example.com:8080 |
| REQUEST_URI | 請求 URI (含查詢字符串) | /page?id=1 |
| REQUEST_METHOD | HTTP 方法 | GET/POST/PUT |
| QUERY_STRING | 查詢字符串 | id=1&name=test |
| HTTP_USER_AGENT | 客戶端 User-Agent | Mozilla/5.0... |
| HTTP_REFERER | 來源頁面 (不可靠,可偽造) | https://google.com/ |
| REMOTE_ADDR | 客戶端 IP | 192.168.1.1 |
| SERVER_ADDR | 服務器 IP | 10.0.0.1 |
| SCRIPT_FILENAME | 當前腳本絕對路徑 | /var/www/html/index.php |
| REQUEST_TIME | 請求開始時間戳 (PHP 5.1+) | 1700000000 |
| HTTPS | 是否 HTTPS (非空表示是) | on |
⚠️ **不可信項**:HTTP_REFERER、HTTP_X_FORWARDED_FOR (代理頭) 均可偽造,安全決策勿依賴。
$_GET、$_POST、$_COOKIErequest_order (PHP 5.3+) 或 variables_order 控制,默認 GP (GET 後 POST,POST 覆蓋 GET)application/x-www-form-urlencoded 或 multipart/form-datapost_max_size (默認 8M)? 後參數自動解析// 單文件上傳表單
// <input type="file" name="avatar">
$_FILES['avatar'] = [
'name' => 'photo.jpg', // 客戶端文件名
'type' => 'image/jpeg', // MIME 類型 (客戶端提供,不可信)
'tmp_name' => '/tmp/phpXyz123', // 服務器臨時路徑
'error' => 0, // 錯誤碼 (0=成功, 1=超過 upload_max_filesize, 4=無文件)
'size' => 123456, // 文件大小 (字節)
];
多文件 name="files[]" 時結構為多維數組。
.env、Web 服務器配置獲取variables_order 控制 (需包含 E)vlucas/phpdotenv 讀取 .env,不直接依賴 $_ENVsetcookie('name', 'value', time()+3600, '/', 'example.com', true, true)HttpOnly (防 XSS)、Secure (僅 HTTPS)、SameSite (防 CSRF)PHPSESSID)session_start() (必須在輸出前調用)session.save_handler (files/redis/memcached)、session.gc_maxlifetimesession_destroy() + $_SESSION = [] + 刪除 Cookie| 變量 | 風險 | 防範 |
|---|---|---|
| $_GET/$_POST/$_REQUEST | XSS、SQL注入、CSRF | 輸出轉義、預處理語句、CSRF Token |
| $_SERVER['HTTP_REFERER'] | 偽造來源 | 不做安全決策依據 |
| $_FILES | 任意文件上傳 | 驗證類型/大小、重命名、存儲隔離、掃描 |
| $_COOKIE | 會話劫持、XSS | HttpOnly、Secure、SameSite、簽名驗證 |
| $_SESSION | 會話固定、劫持 | session_regenerate_id(true)、安全存儲 |
九大超級全局變量覆蓋了 PHP 應用的所有輸入來源與環境信息。核心原則:**明確來源** (用 $_GET/$_POST 而非 $_REQUEST)、**不信任輸入** (驗證、過濾、轉義)、**最小權限** (Cookie/Session 安全屬性全開)。現代框架封裝了請求對象 (Request) 統一訪問,建議使用框架 API 而非直接操作超級全局變量。