萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP 超全域變數完整指南與面試常見問題

九大超全域變數陣列

超全域變數在所有作用域皆可直接存取,無需 global 宣告:

  • $GLOBALS:所有全域變數的參考
  • $_SERVER:伺服器與執行環境資訊
  • $_GET / $_POST:HTTP GET/POST 參數
  • $_FILES:檔案上傳資訊
  • $_REQUEST:合併 GET/POST/COOKIE(順序受 request_order 影響)
  • $_SESSION:Session 資料
  • $_ENV:環境變數
  • $_COOKIE:HTTP Cookies

其他全域變數

  • $php_errormsg:上一個錯誤訊息(需 track_errors=On,僅在錯誤作用域內有效)
  • $HTTP_RAW_POST_DATA:原始 POST 資料(PHP 7.0+ 棄用,改用 php://input)
  • $http_response_header:HTTP 回應標頭
  • $argc / $argv:CLI 參數個數與陣列

常見面試題精選

Q1: var_dump(0 == "ads") 結果?

A: bool(true)。字串轉整數預設為 0,故 0 == 0。若用 === 則為 false(型別不同)。

Q2: Exception 可被 clone 嗎?

A: 不可。Exception 類別未實作 __clone,且內部狀態不支援複製。

Q3: Traits 特性?

A: 橫向重用機制,類似類別但不可實例化。可讓多個類別共用方法;靜態變數可被 trait 方法引用但不可定義;trait 定義屬性時,使用類別不可定義同名屬性。

Q4: Cookie 禁用時 Session 還能用嗎?

A: 能。PHP 支援 URL 重寫(自動將 PHPSESSID 附加在連結/表單中)或隱藏表單欄位傳遞 Session ID。

Q5: 上傳檔案但 $_FILES 為空?

A: 檢查:form 是否 enctype="multipart/form-data"、php.ini file_uploads=On、upload_max_filesize/post_max_size 限制、tmp目錄權限。

Q6: 如何取得用戶 IP 與 User Agent?

$ip = $_SERVER['REMOTE_ADDR']; // 或 HTTP_X_FORWARDED_FOR (代理情況)
$ua = $_SERVER['HTTP_USER_AGENT'];

Q7: Socket 程式如何維持 Session?

A: 手動管理 Session ID,透過自定協議傳遞 PHPSESSID,伺服器端用 session_id($id) 後再 session_start()。

Q8: 如何取得 HTTP 標頭?

getallheaders(); // Apache 環境
// 或
$_SERVER['HTTP_*'] 系列變數

實用工具函數

  • realpath():取得檔案絕對路徑
  • session_id() / session_name():Session 識別管理
copyright © 萬盛學電腦網 all rights reserved