PHP Session 用法與Sessions入實例應用
session 出現頭信息已經發出的原因與cookie一樣.
在php教程5中,所有php session 的注冊表配置選項都是編程時可配置的,一般情況下,我們是不用修改其配置的.要了解php的session注冊表配置選項,請參考手冊的Session 會話處理函數處.
session的保存數據的時候,是通過系列化$_SESSION數組來存貯,所以有系列化所擁有的問題,可能有特殊字符的值要用base64_encode函數編碼,讀取的時候再用base64_decode解碼
下面是一個簡單的腳本,你應該在你的PHP代碼開始的地方開始了一個PHP的會話。
<?php
session_start(); // start up your PHP session!
?>
這小片的代碼將注冊與服務器的用戶的會話,讓您開始儲蓄用戶信息和分配一個UID(獨特的識別號碼該用戶的會話)。
存儲會話變量
當你要存儲在會話用戶數據使用了$ _SESSION關聯數組。這是你們兩個存儲和檢索會話數據。在以前的PHP版本中還有其他方法來執行此存儲操作,但它已被更新,這是正確的方式去做。
<?php
session_start();
$_SESSION['views'] = 1; // store session data
echo "Pageviews = ". $_SESSION['views']; //retrieve data
?>
看個簡單購物車實例
<?php
session_start();
if(isset($_SESSION['views']))
$_SESSION['views'] = $_SESSION['views']+ 1;
else
$_SESSION['views'] = 1;
echo "views = ". $_SESSION['views'];
?>
<?php
session_start();
if(isset($_SESSION['cart']))
unset($_SESSION['cart']);
?>
<?php
session_start();
session_destroy();
?>
session使用實例
<?php
/**
* 效驗session的合法性
*
*/
function sessionVerify() {
if(!isset($_SESSION['user_agent'])){
$_SESSION['user_agent'] = MD5($_SERVER['REMOTE_ADDR']
.$_SERVER['HTTP_USER_AGENT']);
}
/* 如果用戶session ID是偽造,則重新分配session ID */
elseif ($_SESSION['user_agent'] != MD5($_SERVER['REMOTE_ADDR']
. $_SERVER['HTTP_USER_AGENT'])) {
session_regenerate_id();
}
}
/**
* 銷毀session
* 三步完美實現,不可漏
*
*/
function sessionDestroy() {
session_destroy();
setcookie(session_name(),'',time()-3600);
$_SESSION = array();
}
?>
session解決了一個PHP允許你存儲上以供日後使用(即用戶名,購物車中的物品等)服務器的用戶信息這個問題。不過,本次session的信息是暫時的,通常會被刪除後,很快用戶已經離開了網站,它使用會話。
重要的是要思考,如果session的臨時存儲是適用於您的網站。如果你需要一個較長期儲存,你需要找到另一種解決方案,像一個MySQL數據庫教程。
session的工作創造一個獨特的識別碼(UID)為每個訪問者,並在此基礎身份證儲存變數。這有助於防止兩個用戶的數據獲取與另一次混亂的時候訪問同一網頁。
注:如果您不與會話編程經驗,不建議您使用在網站上,需要高度安全session,因為有安全漏洞,需要一些先進的技術,以堵塞。
啟動一個PHP會話
在您可以開始在你的PHP會話存儲用戶信息,您必須首先啟動了session。當您啟動一個會話,它必須在您的代碼的開頭很之前任何HTML或文本,發送。