PHP中的會話管理Cookie和Session

黑燈舞 9年前發布 | 23K 次閱讀 PHP PHP開發

會話管理是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();
?>

轉載:PHP中的會話管理Cookie和Session【原創】

 本文由用戶 黑燈舞 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!