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(); ?>