PHP的變數種類

在早期版本的 PHP,有著之前提過 Register Globals 的安全問題

所以自從 PHP 4.2.0 之後
變數的表示方式一律建議使用$_METHOD[NAME] 的表示方式

以下就是變數種類及其命名方式:

$GLOBALS     //涵括整體變數的陣列
$_SERVER     //伺服器環境變數
$_GET          //表單以GET方式傳送的變數(會在網址列顯示出來的那種)
$_POST        //表單以POST方式傳送的變數
$_COOKIE     //儲存的COOKIE含的變數
$_EVN          //環境變數
$_REQUEST   //使用者輸入的變數
$_SESSION   //SESSION的變數

其中又以伺服器端變數保留字最多:

  • PHP_SELF
    現在正執行的php檔案與 document root 的相對位置
    e.g., http://example.com/test.php/foo.bar 裡的 $_SERVER[‘PHP_SELF’] 將會顯示成 /test.php/foo.bar.

  • argv
    傳進參數的陣列
    當用於 CLI 時,將使用 C-type 的引數存取方式
    當使用 GET 方法時,將包含整個 query string

  • argc
    CLI 傳入參數的個數

  • GATEWAY_INTERFACE
    CGI 所使用 spec. 的版本
    e.g. ‘CGI/1.1’

  • SERVER_NAME
    php 所運行的伺服器名稱
    若採用 virtual host,則回報該 virtual host 的定義名稱

  • SERVER_SOFTWARE
    伺服器端軟體的辨識名稱字串

  • SERVER_PROTOCOL
    伺服器所使用通訊協定的版本
    e.g. ‘HTTP/1.0’

  • REQUEST_METHOD
    傳遞的方法
    e.g. ‘GET’, ‘HEAD’, ‘POST’, ‘PUT’

  • QUERY_STRING
    存取網頁的 query string

  • DOCUMENT_ROOT
    現行 php 所存在的 document root directory
    由伺服器端組態檔所定義

  • HTTP_ACCEPT
    標頭裡注明接受的種類 (Accept)

  • HTTP_ACCEPT_CHARSET
    標頭裡注明接受的字元集方式 (Accept-Charset)
    Example: ‘iso-8859-1,*,utf-8’.

  • HTTP_ACCEPT_ENCODING
    標頭裡注明接受的編碼方式 (Accept-Encoding)
    Example: ‘gzip’.

  • HTTP_ACCEPT_LANGUAGE
    標頭裡注明接受的語系 (Accept-Language)
    Example: ‘en’.

  • HTTP_CONNECTION
    標頭裡注明的連線方式 (Connection)
    Example: ‘Keep-Alive’.

  • HTTP_HOST
    標頭裡注明的主機名稱 (Host)

  • HTTP_REFERER
    由何處連至本頁面
    這是由用戶端瀏覽器所提供的,有些則提供修改此變數的功能
    所以,由此蒐集到的資訊並不可靠

  • HTTP_USER_AGENT
    標頭裡注明的連線軟體 (User_Agent)
    A typical example is: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)

    也可以使用 get_browser() 來裁剪得到的字串

  • REMOTE_ADDR
    客戶端連到伺服器所使用的IP

  • REMOTE_HOST
    客戶端連到伺服器所使用的主機名稱
    透過 REMOTE_ADDR 對用戶端作 DNS 反查

    Note: 伺服器必須建立變數
    以 Apache 為例,必須在 httpd.conf 裡建立 HostnameLookups 變數
    相關資訊參考 gethostbyaddr()

  • REMOTE_PORT
    客戶端連到伺服器所使用的通訊埠

  • SCRIPT_FILENAME
    現行 php 檔的名稱,絕對路徑

  • SERVER_ADMIN
    系統管理者字串
    由伺服器端軟體組態檔提供

  • SERVER_PORT
    伺服器所使用的通訊埠
    一般情況為 ’80’,若使用 SSL 則為 ‘443’

  • SERVER_SIGNATURE
    伺服器簽章
    伺服器版本與名稱將會被加到自行產生的頁面 (server-generated pages)

  • PATH_TRANSLATED
    現行 php 檔以 file system 為基礎的路徑 (不是 document root)

  • SCRIPT_NAME
    現行 php 檔的名稱,包含路徑

  • REQUEST_URI
    提供 URI 以存取網頁
    e.g., ‘/index.html’

  • PHP_AUTH_USER
    在 Apache 底下執行,使用者的名稱

  • PHP_AUTH_PW
    在 Apache 底下執行,使用者所提供的密碼

  • AUTH_TYPE
    在 Apache 底下執行,所使用的認證方式

  • 發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *