PHP預定義變量(二)

四、Session變量($_SESSION):由PHP的SESSION函數產生的數據,都以超全局變量的方式,存放在$_SESSION變量中。
1、Session簡介
SESSION也稱為會話期,其是存儲在伺服器上的一小段文件,用於存儲用戶的相關信息。SESSION之間使用會話標識來區別,每一個SESSION都有唯一的一個標識。使用SESSION也可以完成類似於COOKIE一樣的工作。session會自動的對要設置的值進行encode與decode,因此session可以支持存儲任意數據類型,包括數組與對象等。
2、使用session_save_path()函數,設置session文件的保存目錄,如:
session_save_path(“D:/phpnow/Apache2/temp”);
//使用session_save_path()函數取得當前session保存的目錄
echo session_save_path().”
“;
註:PHP安裝完成後,由於SESSION的保存路徑沒有設置,如果直接在腳本中使用SESSION,會出現因為路徑不存在而產生的錯誤。使用session_save_path()函數,可以修改SESSION文件的保存路徑,但是僅限於當前腳本。如果在PHP配置文件中,已經設置瞭有效的SESSION文件保存目錄,那麼在腳本中可以不使用此函數,此時所有的PHP程式都共用一個目錄存儲SESSION文件。
3、註冊SESSION變量

由於$_SESSION是一個數組,可以使用數組添加單元的方式,來為SESSION增加新變量。如:

session_start();//開啟SESSION,使用前,必須要先開啟

//使用數組添加單元的方法,增加SESSION變量

$_SESSION[“username”] = “phpstuer”;//存儲字符串

$sessionArr = array(“1″,”2″,”3”);
$_SESSION[“arr”] = $sessionArr; //存儲數組

NOTE:使用session_register函數也可以,註冊SESSION變量,但此函數從PHP5.3後就已棄用,所以這裡不再舉例。

4、訪問SESSION變量
由於SESSION變量,都是以單元的形式,存儲在$_SESSION全局變量中,所以使用訪問數組的方法,就可以訪問SESSION變量。SESSION變量註冊後,需要經過初始化後才能使用,這一點與COOKIE是不同的。初始化SESSION的函數是session_start()。如:
//使用session_start()函數開啟SESSION
session_start();
//遍歷$_SESSION數組
foreach($_SESSION as $key=>$value){
echo “$key=>$value
“;
}
echo “單獨訪問SESSION變量:”;
echo $_SESSION[“username”].”
“;
echo “單獨訪問SESSION變量 :”;
echo $_SESSION[“arr”][2];

註意:使用session_start()函數時,為防止出現錯誤提示信息,在頁面最上面添加代碼。

5、刪除SESSION變量
在使用完SESSION變量後,需要對已經註冊的SESSION進行刪除,以減少對伺服器的資源使用。
session_start();
//刪除前:
echo “

";
print_r($_SESSION);
echo "

“;
//使用unset()函數刪除一個$_SESSION變量
unset($_SESSION[“username”]);
//使用session_unset()函數,刪除當前頁面的$_SESSION變量
//session_unset();
//使用session_destroy()函數,刪除當前頁面的$_SESSION變量並刪除SESSION文件
//session_destroy();

//刪除後:
echo “

";
print_r($_SESSION);
echo "

“;

五、Request變量($_REQUEST)作為超全局變量,$_REQUEST存儲瞭包括$_POST、$_GET、$_COOKIE變量在內的數據。通過訪問$_REQUEST,也可以實現$_POST、$_GET、$_COOKIE變量的功能。
雖然$_REQUEST在使用時比較方便,但是其提供的數據存在一定的危險性。比如一段程式使用$_REQUEST讀取$_COOKIE值時,那有心的訪客可以通過提供一個$_GET變量來模擬$_COOKIE值,從而取得一定的訪問權限。
使用實例:略。

六、伺服器變量($_SERVER)是由網絡伺服器創建的數組,其內容包括頭信息、路徑、腳本位置等。不同的網絡伺服器提供的信息有所出入,下面實例是以Apache伺服器提供的作為標準。
echo “

";
print_r($_SERVER);
echo "

“;
//解釋如下:
echo “顯示腳本文件的相對路徑和文件名:\””.$_SERVER[“PHP_SELF”].”\”
“;
echo “顯示伺服器使用的CGI腳本規范:\””.$_SERVER[“GATEWAY_INTERFACE”].”\”
“;
echo “顯示當前運行腳本所在伺服器的IP地址:\””.$_SERVER[“SERVER_ADDR”].”\”
“;
echo “顯示當前運行腳本伺服器名稱:\””.$_SERVER[“SERVER_NAME”].”\”
“;
echo “顯示當前運行腳本伺服器標識:\””.$_SERVER[“SERVER_SOFTWARE”].”\”
“;
echo “顯示請求頁面的通信協議的名稱和版本:\””.$_SERVER[“SERVER_PROTOCOL”].”\”
“;
echo “顯示訪問頁面的請求方法:\””.$_SERVER[“REQUEST_METHOD”].”\”
“;
echo “顯示腳本開始運行時間:\””.$_SERVER[“REQUEST_TIME”].”\”
“;
echo “顯示URL問號後的字符串:\””.$_SERVER[“QUERY_STRING”].”\”
“;
echo “顯示當前運行腳本的文檔根目錄:\””.$_SERVER[“DOCUMENT_ROOT”].”
“;
echo “顯示當前Accept請求的頭信息:\””.$_SERVER[“HTTP_ACCEPT”].”\”
“;
echo “顯示當前請求的字符信息:\””.$_SERVER[“HTTP_ACCEPT_CHARSET”].”\”
“;
echo “顯示當前當前請求的Accept-Encoding頭信息:\””.$_SERVER[“HTTP_ACCEPT_ENCODING”].”\”
“;
echo “顯示當前請求的Accept-Language頭信息:\””.$_SERVER[“HTTP_ACCEPT_LANGUAGE”].”\”
“;
echo “顯示當前請求的Connection頭信息:\””.$_SERVER[“HTTP_CONNECTION”].”\”
“;
echo “顯示當前請求的Host頭信息:\””.$_SERVER[“HTTP_HOST”].”\”
“;
echo “顯示當前頁面的前一個頁面的URL地址:\””.$_SERVER[“HTTP_REFERER”].”\”
“;
echo “顯示當前請求的User-Agent的頭信息:\””.$_SERVER[“HTTP_USER_AGENT”].”\”
“;
echo “顯示腳本是否可以通過HTTPS協議進行訪問:\””.$_SERVER[“HTTPS”].”\”
“;
echo “顯示瀏覽當前頁面用戶的IP地址:\””.$_SERVER[“REMOTE_ADDR”].”\”
“;
echo “顯示瀏覽當前頁面用戶的主機名:\””.$_SERVER[“REMOTE_HOST”].”\”
“;
echo “顯示用戶連接到伺服器時所使用的端口:\””.$_SERVER[“REMOTE_PORT”].”\”
“;
echo “顯示當前執行腳本的絕對路徑名:\””.$_SERVER[“SCRIPT_FILENAME”].”\”
“;
echo “顯示Apache配置文件中的SERVER_ADMIN參數設置情況:\””.$_SERVER[“SERVER_ADMIN”].”\”
“;
echo “顯示網絡伺服器使用的端口,默認為\”80\”:\””.$_SERVER[“SERVER_PORT”].”\”
“;
echo “顯示伺服器版本和虛擬主機名的字符串:\””.$_SERVER[“SERVER_SIGNATURE”].”\”
“;
echo “顯示腳本在文件系統中的基本路徑:\””.$_SERVER[“PATH_TRANSLATED”].”\”
“;
echo “顯示當前腳本的路徑:\””.$_SERVER[“SCRIPT_NAME”].”\”
“;
echo “顯示訪問當前頁面的URI:\””.$_SERVER[“REQUEST_URI”].”\”
“;
七、環境變量($_ENV)是預定義的一個數組,記錄著系統路徑等信息。
echo “

";
print_r($_SERVER);
echo "

“;
//單獨訪問環境變量的數組成員,可以通過“$_ENV[‘成員變量名’]”的方式實現,如:
echo “伺服器操作系統為:”.$_ENV[“OS”].”
“;
八、 HTTP文件上傳變量($_FILES):由HTML表單生成的文件上傳變量,以數組的形式記錄瞭上傳文件的詳細信息,其數組成員包括上傳的文件名:name;文件類型:type;臨時文件名:tmp_name;錯誤信息代碼 :error;文件大小:size。下面介紹使用HTML表單,生成文件上傳變量的方法,
要使表單產生文件變量,要滿足三個條件:
1、HTML表單要使用POST方式傳遞數據。
2、表單的“enctype”參數要設置為“multipart/form-data” 。
3、表單中包含一個文件選擇框。
通過$_FILES變量獲取上傳文件相關信息後,就可以配合其他文件函數實現文件的上傳。
上傳文件及$_FILES的用法實例:待整理
九、$GLOBALS變量以數組的形式,記錄瞭所有已經定義的全局變量,而變量名就是這個數組的索引。即然$GLOBALS記錄著所有的全局變量,那麼理所當然的也可以訪問全局變量裡的信息。下面介紹使用$GLOBALS訪問其他預定義變量的方法,如:
session_start();
$_SESSION[“school”] = “大學”;
echo $_SESSION[“school”].”
“; //輸出 大學
//使用$GLOBALS顯示當前操作系統版本
echo $GLOBALS[“_ENV”][“OS”].”
“;
//使用$GLOBALS訪問SESSION值
echo $GLOBALS[“_SESSION”][“school”].”
“; //輸出大學

echo “

";
print_r($GLOBALS);
echo "

“;

發佈留言