首頁  >  文章  >  後端開發  >  php預定義變數方法

php預定義變數方法

小云云
小云云原創
2017-11-15 15:10:101861瀏覽

PHP 提供了大量的預定義變數.由於許多變數依賴於運行的伺服器的版本和設定,及其它因素,所以並沒有詳細的說明文件.一些預定義變數在PHP 以命令列形式運行時並不生效.有關這些變數的詳細清單.

使用者自訂預定義變數

實例程式碼如下:

<?php  
echo "当前操作系统信息".PHP_OS."<br/>";  
echo &#39;本文件路径和文件名为:&#39;.__FILE__.&#39;<br />&#39;;  
echo "当前PHP版本信息".PHP_VERSION."<br/>";  
?>

系統預定義變數

$ GLOBALS

包含一個引用指向每個目前腳本的全域範圍內有效的變數.該陣列的鍵名為全域變數的名稱.從PHP 3 開始存在$GLOBALS 陣列.

#$ _SERVER

變數由web 伺服器設定或直接與目前腳本的執行環境相關聯.類似於舊數組$HTTP_SERVER_VARS 數組(仍然有效,但反對使用).

#$_GET

經由URL 請求提交至腳本的變數.類似舊數組$HTTP_GET_VARS 數組(仍然有效,但反對使用).

$_POST

由HTTP POST 方法提交至腳本的變數.類似於舊數組$HTTP_POST_VARS 數組(仍然有效,但反對使用).

$_COOKIE

經由HTTP Cookies 方法提交至腳本的變數.類似於舊數組$HTTP_COOKIE_VARS 數組(依然有效,但反對使用).

$_FILES

經由HTTP POST 檔案上傳而提交至腳本的變數.類似舊陣列$HTTP_POST_FILES 陣列(依然有效,但反對使用) .詳細資訊請參閱POST 方法上傳.

$_ENV

執行環境提交至腳本的變數.類似於舊數組$HTTP_ENV_VARS 數組(仍然有效,但反對使用).

$_REQUEST

經由GET,POST 和COOKIE 機制提交至腳本的變數,因此該數組並不值得信任.所有包含在該數組中的變數的存在與否以及變數的順序均按照php.ini 中的variables_order 配置指示來定義.此數組在PHP 4.1.0 之前沒有直接對應的版本.參見import_request_variables().

#自PHP 4.3.0 起,$_FILES 中的檔案資訊不再存在於$_REQUEST 中.

Note: 當運行於命令列模式時,此數組將不會包含argv 和argc 條目;它們已經存在於數組$_SERVER 中.

$ _SESSION

目前註冊給腳本會話的變數.類似於舊數組$HTTP_SESSION_VARS 數組(仍然有效,但反對使用).

$_SERVER['PHP_SELF']

目前正在執行腳本的檔名,與document root相關.舉例來說,在URL位址為http://example.com/test.php/foo.bar 的腳本中使用$_SERVER['PHP_SELF'] 將會得到/test.php/foo.bar 這個結果.如果PHP 以命令列方式運行,該變數無效.

#$_SERVER['SERVER_NAME']

目前運行腳本所在伺服器主機的名稱.如果腳本運行在一個虛擬主機上,該名稱是由那個虛擬主機所設定的值決定.例如,在URL位址為/test.php $_SERVER['SERVER_NAME'] 將會得到這個結果.

實例程式碼如下:

<?php 
// user sent a GET header with key = secret_access, val = true, so 
echo $_GET["secret_access"]; // output: true 
echo $secret_access; // output: 
session_start(); 
// in previous logic, you set session variable $secret_access = false 
echo $_SESSION["secret_access"]; // output: false 
echo $secret_access; // output: false 
extract_globals();  // Globals put into "normal" variables 
echo $_GET["secret_access"]; // output: true 
echo $_SESSION["secret_access"]; // output: false 
echo $secret_access; // output: true 
// VARIABLES ARE COMPROMISED! 
// DO NOT USE $secret_access ! 
// USE $_SESSION["secret_access"] instead !!! 
?>

php 4.2.0 以及後續版本中,php 指令register_globals 的預設值為 off。這是 php 的一個主要變化。讓 register_globals 的值為 off 將影響到預定義變數集在全域範圍內的有效性。例如,為了得到DOCUMENT_ROOT 的值,將必須使用$_SERVER['DOCUMENT_ROOT'] 來取代$DOCUMENT_ROOT,又如,使用$_GET['id'] 來取代$id 從中取得id 值,也或使用$_ENV['HOME '] 來取代$HOME 取得環境變數HOME 的值。

相關推薦:

PHP預先定義變數實例詳解

php預先定義變數

php預設變數_PHP教程

#

以上是php預定義變數方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn