PHP核心学习(7)

cookie会话技术

介绍

当同一用户多次请求相同服务器时,通过http协议辨别用户身份,从而不需要进行额外身份验证。这样我们可以为用户保留他们的一些访问数据在他们的浏览器上,从而下一次他们再访问这个网站时就不用再登录啊之类的了,好比浏览商品时的上次访问一样。

分类
cookie技术

cookie保存在浏览器上的小文本文件,可以包含用户信息,web网站可以访问cookie信息

session技术

session将数据保存到服务器端,保存通信时间间隔,web网站可以访问session信息,session技术实现依赖cookie技术

区别
安全

session储存在服务器,安全性高
cookie储存在浏览器端,安全性低

数据大小

cookie数量和大小有限制(20个/4k)
session数据存储不限

可用数据类型

cookie只能存储简单数据,例如数值/字符串
session可以存储复杂数据(自动序列化)

保存位置

cookie保存在浏览器上
session保存在服务器上

cookie的原理与使用

1.第一次请求时,php通过setcookie函数将数据通过http协议响应头传给浏览器
2.浏览器在第一次响应时将cookie数据保存到浏览器
3.浏览器后序请求同一个网站的时候,会自动检测是否存在cookie数据,如果存在将在请求头中将数据携带到服务器
4.php执行的时候会自动判断浏览器是否携带cookie,如果携带,自动保存到$_COOKIE
5.利用$_COOKIE访问cookie数据

设置cookie信息

函数setcookie[字符串,值,(值为)整数或字符串]

setcookie('age',1);
setcookie('name','Mark');
读取cookie信息
var_dump($_COOKIE);

cookie能够实现跨脚本共享数据

cookie生命周期

cookie在浏览器生存时间(浏览器在下次访问服务器时是否携带对应的cookie)
1)默认不设定时的生命周期:浏览器关闭
2)设定为一个常规日期戳的周期:setcookie的第三个参数设定时间,一定要加上当前格林威治时间,否则日期错误

setcookie('a2','a2',time() + 7*24*60*60);

时间无效的话,浏览器直接没有那个cookie

3)设定为0的周期
相当于会话结束,浏览器关闭的周期
4)"删除"一个cookie内容的做法
服务器没有权限去操作浏览器上的内容
可以设定生命周期来让浏览器自动判定

cookie作用范围

默认cookie是在不同的文件夹下有访问限制
上层文件夹中设定的cookie可以在子文件夹中访问,而反之则不行
上层看不到下层内容但是下层能看到上层
1)默认不设定的范围
2)设定为/的含义:告知cookie的作用范围是网站根目录
setcookie(名字,值,生命周期,作用范围)
例如

setcookie('global_son','global_son',0,'/');
cookie跨子域

跨子域:在同一级别域名下,XXX.com(一级域名)
不同子域搭建在不同的服务器上(相当于不同的根目录)但是可以通过cookie设置实现对应的cookie共享访问,但是默认是不允许跨域名访问的。
1)设定cookie的有效域名
2)不设定时的默认有效域名
3)跨子域的设定方法
在设定域名访问的时候用设定上级域名即可,这个使所有以myitcast.com结尾的网站都可以共享cookie
例如

setcookie('local2','local2',0,'/','www.myitcast.cn');
setcookie('global','global',0,'/','myitcast.com');
cookie数组数据

cookie本身不支持数组,必须想办法凑成数组
利用这个浏览器碰到[]就判定为数组的漏洞来保存那些数组数据,从而更方便保存与利用部分用户浏览数据

1)设置形式:setcookie('c1[k1],值')

setcookie('goods_ids[0]',1);
setcookie('goods_ids[1]',2);
setcookie('goods_ids[2]',3);
print_r($_COOKIE);

2)读取形式:$_COOKIE['c1']['k1']

echo $_COOKIE['good_ids'][2];

感谢黑马!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值