PHP中的會話管理Cookie和Session
會話管理是web開發的一項重要內容,包括Session和Cookie兩種技術。本章介紹Cookie和Session的創建和使用。
Cookie:
cookie 常用于識別用戶。cookie 是服務器留在用戶計算機中的小文件。每當相同的計算機通過瀏覽器請求頁面時,它同時會發送 cookie。通過 PHP能夠創建并取回 cookie 的值。cookie 只能讀取所在域,單一域不能超過20個cookie,每個cookie文件長度上限位4k字節,瀏覽器最多儲存300個cookie。
cookie的創建:
setcookie() 函數用于設置 cookie。注意:setcookie() 函數必須位于 <html> 標簽之前。
語法:
/** * name:必需。規定 cookie 的名稱。 * value:必需。規定 cookie 的值。 * expire:可選。規定 cookie 的有效期。 * path:可選。規定 cookie 的服務器路徑。 * domain:可選。規定 cookie 的域名。 * secure:可選。規定是否通過安全的 HTTPS 連接來傳輸 cookie。 */ setcookie(name,value,expire,path,domain,secure)
注釋:在發送cookie時,cookie的值會自動進行URL編碼。接收時會進行URL解碼。
例子:
1.設置并發送 cookie:
<?php $value = "my cookie value"; // 發送一個簡單的 cookie //cookie24小時過期 setcookie("TestCookie", $value, time()+3600*24); ?> <html> <body> ... ...
2.檢索出 cookie 值的不同方法:
<html> <body> <?php // 輸出個別的 cookie echo $_COOKIE["TestCookie"]; echo "<br />"; echo $HTTP_COOKIE_VARS["TestCookie"]; echo "<br />"; // 輸出所有 cookie print_r($_COOKIE); ?> </body> </html>
3.輸出
my cookie value my cookie value Array ([TestCookie] => my cookie value)
4.刪除 cookie
通過把失效日期設置為過去的日期/時間,刪除一個 cookie:
<?php // set the expiration date to one hour ago setcookie("TestCookie", "", time()-3600); ?>
Session:
PHP session 變量用于存儲有關用戶會話的信息,或更改用戶會話的設置。Session 變量保存的信息是單一用戶的,并且可供應用程序中的所有頁面使用。Session 的工作機制是:為每個訪問者創建一個唯一的 id (UID),并基于這個 UID 來存儲變量。UID 存儲在 cookie 中,亦或通過 URL 進行傳導。
session的創建:
在您把用戶信息存儲到 PHP session 中之前,首先必須啟動會話。session_start() 函數必須位于 <html> 標簽之前。
語法:
session_start();
例子:
1.開始session
<?php session_start(); ?> <html> <body> </body> </html>
2.存儲 session 變量
存儲和取回 session 變量的正確方法是使用 $_SESSION 變量:
<?php session_start(); // store session data $_SESSION['views']=1; ?> <html> <body> <?php //retrieve session data echo "Pageviews=". $_SESSION['views']; ?> </body> </html>
3.輸出
Pageviews=1
4.終結 session
如果您希望刪除某些 session 數據,可以使用 unset() 或 session_destroy() 函數。
unset() 函數用于釋放指定的 session 變量:
<?php unset($_SESSION['views']); ?>
您也可以通過 session_destroy() 函數徹底終結 session:
<?php session_destroy(); ?>