在早期版本的 PHP,有著之前提過 Register Globals 的安全問題
所以自從 PHP 4.2.0 之後
變數的表示方式一律建議使用$_METHOD[NAME] 的表示方式
以下就是變數種類及其命名方式:
$GLOBALS //涵括整體變數的陣列 $_SERVER //伺服器環境變數 $_GET //表單以GET方式傳送的變數(會在網址列顯示出來的那種) $_POST //表單以POST方式傳送的變數 $_COOKIE //儲存的COOKIE含的變數 $_EVN //環境變數 $_REQUEST //使用者輸入的變數 $_SESSION //SESSION的變數
其中又以伺服器端變數保留字最多:
現在正執行的php檔案與 document root 的相對位置
e.g., http://example.com/test.php/foo.bar 裡的 $_SERVER[‘PHP_SELF’] 將會顯示成 /test.php/foo.bar.
傳進參數的陣列
當用於 CLI 時,將使用 C-type 的引數存取方式
當使用 GET 方法時,將包含整個 query string
CLI 傳入參數的個數
CGI 所使用 spec. 的版本
e.g. ‘CGI/1.1’
php 所運行的伺服器名稱
若採用 virtual host,則回報該 virtual host 的定義名稱
伺服器端軟體的辨識名稱字串
伺服器所使用通訊協定的版本
e.g. ‘HTTP/1.0’
傳遞的方法
e.g. ‘GET’, ‘HEAD’, ‘POST’, ‘PUT’
存取網頁的 query string
現行 php 所存在的 document root directory
由伺服器端組態檔所定義
標頭裡注明接受的種類 (Accept)
標頭裡注明接受的字元集方式 (Accept-Charset)
Example: ‘iso-8859-1,*,utf-8’.
標頭裡注明接受的編碼方式 (Accept-Encoding)
Example: ‘gzip’.
標頭裡注明接受的語系 (Accept-Language)
Example: ‘en’.
標頭裡注明的連線方式 (Connection)
Example: ‘Keep-Alive’.
標頭裡注明的主機名稱 (Host)
由何處連至本頁面
這是由用戶端瀏覽器所提供的,有些則提供修改此變數的功能
所以,由此蒐集到的資訊並不可靠
標頭裡注明的連線軟體 (User_Agent)
A typical example is: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)
也可以使用 get_browser() 來裁剪得到的字串
客戶端連到伺服器所使用的IP
客戶端連到伺服器所使用的主機名稱
透過 REMOTE_ADDR 對用戶端作 DNS 反查
Note: 伺服器必須建立變數
以 Apache 為例,必須在 httpd.conf 裡建立 HostnameLookups 變數
相關資訊參考 gethostbyaddr()
客戶端連到伺服器所使用的通訊埠
現行 php 檔的名稱,絕對路徑
系統管理者字串
由伺服器端軟體組態檔提供
伺服器所使用的通訊埠
一般情況為 ’80’,若使用 SSL 則為 ‘443’
伺服器簽章
伺服器版本與名稱將會被加到自行產生的頁面 (server-generated pages)
現行 php 檔以 file system 為基礎的路徑 (不是 document root)
現行 php 檔的名稱,包含路徑
提供 URI 以存取網頁
e.g., ‘/index.html’
在 Apache 底下執行,使用者的名稱
在 Apache 底下執行,使用者所提供的密碼
在 Apache 底下執行,所使用的認證方式