HTTP协议是无状态、无记忆的。多次请求之间,无任何的联系,即同一用户请求同一网站的不同页面,服务器无法识别是否是同一用户发起的请求。用户无法进行连续的业务逻辑。
1、设置cookie基本语法:setcookie('数据名','数据值')。
2、读取cookie数据:$_COOKIE[cookie数据名]。
3、删除cookie:setcookie(数据名,'')。
l COOKIE数据是在执行setcookie函数后,服务器脚本通过HTTP协议的set-cookie协议项,通知浏览器在其COOKIE数据区保存的数据。
l 浏览器后续对本站的页面发起请求时,自动携带对应的COOKIE数据。服务器脚本接收到数据后,就可以区分不同的用户。
COOKIE数据的默认的生命周期是会话周期,即在浏览器窗口关闭之前,一直存在。关闭后立即消失。关闭浏览器:相当于结束会话,COOKIE数据自动消失。再次打开浏览器,相同页面读取数据,无法读到。
好处:减少空间占用,减少HTTP传输的数据量,提高数据安全。
默认使用窗口周期的COOKIE数据 在关闭后无COOKIE:
setcookie(名称,内容,有效期time() +有效的秒数); 设置COOKIE的第三个参数,为设置其有效期
二、session的增删改查
session_start(); //开启。
注意:session_start()之前不能有任何输出内容,本身也需要通过HTTP协议响应头实现
$_SESSION[名] =值; //设置
$_SESSION[名] // 读取
$_SESSION[名] =新值;//修改
unset($_SESSION[名]); //删除
l 从存储位置:
COOKIE存储在浏览器,SESSION存储在服务器。
l 数据安全性:
SESSION更高(存储安全性要求比较高的数据)
l 传输的数据量(每次请求与响应时):
COOKIE数据在浏览器请求本站时都会携带,数据越多,携带数据量越大。(消耗带宽)
l 支持的数据类型:
COOKIE仅支持字符串类型;SESSION支持除资源型外的所有类型。(session文件中记录每个数据的类型)。
l 都是用来解决HTTP协议的无状态、无记忆的不足之处,以实现业务的连续性,如登录及购物车模块的实现。
l 二者都是会话技术的范畴 。
l SESSION需要依赖COOKIE(浏览器的身份信息)进行数据的传递。禁用COOKIE后,session无法正常使用。
SESSION需要依赖COOKIE存储 对应session会话名,传递会话名。
(可以通过参数形式将sessionid传递到指定位置,确保各个页面操作的是同一session文件)
session_id():读取以及设置session会话名称。可以在各个页面之间传递SESSION会话名。