客户端与服务器会话,使用 COOKIE 和 SESSION 技术。
COOKIE技术
cookie是客户端会话技术,将数据保存到客户端。特点和作用:
- 存储在客户端浏览器(所以不太安全)
- 浏览器对cookie有限制
- 单个cookie的大小(4kb)
- 单个域名下cookie数量(20个)
- 只能存放少量不敏感的数据
- 在不登录的情况下,完成服务器对客户端的身份识别
创建cookie
setcookie(name, value, expire, path, domain);
- name => cookie名
- value => cookie值
- expire => 过期时间,单位(秒)
- path => 路径,默认/
- domain => 域名,默认当前域名
注释:创建cookie应该位于html标签之前。
实例,创建一个名为user、值为zhangsan的cookie,有效期为3600秒
<?php
setcookie('user','zhangsan',time()+3600)
?>
注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码(为防止 URL 编码,请使用 setrawcookie() 取而代之)。
获取cookie
使用$_COOKIE对象获取,例如获取名为 user 的cookie值
<?php
echo $_COOKIE['user'];
?>
注释:cookie不能直接修改,再次创建同名cookie即可覆盖
删除cookie
重新设置同名cookie,并把它的生存时间,比当前时间少即可,那么它就表示过期了,会被删除。
例如,删除名为 user 的cookie
<?php
setcookie('user','zhangsan2',time()-3600);
echo $_COOKIE['user']; // 不输出,验证已经删除
?>
使用 time()-任意正整数,表示把时间戳设置比当前时间小。
SESSION技术
session表示服务器会话技术,将数据保存到服务器。
不过,session会话信息是临时的,在用户离开网站后将被删除。如果您需要永久储存信息,可以把数据存储在数据库中。
Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。
开启session
在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
注释:session_start() 函数必须位于 <html> 标签之前:
<?php session_start(); ?> <html> <body> </body> </html>
上面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID。
存取session
存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:
<?php session_start(); // store session data $_SESSION['views']=1; ?> <html> <body> <?php //retrieve session data echo "Pageviews=". $_SESSION['views']; // Pageviews=1 ?> </body> </html>
注释:session的生命周期随每个服务器设置不同而不同,如果需要设置时间,例如设置3600秒,即:$_SESSION[‘expiretime’] = time() + 3600;
终结 Session
如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
unset() 函数用于释放指定的 session 变量:
<?php unset($_SESSION['views']); ?>
您也可以通过 session_destroy() 函数彻底终结 session:
<?php session_destroy(); ?>
注释:session_destroy() 将重置 session,您将失去所有已存储的 session 数据。
本篇完,还有疑问?留下评论吧