会话技术 cookie

在同一台浏览器,的多次请求周期内,持久性存储数据一种技术!
基础:HTTP的无状态性。
B/S 架构基于HTTP协议进行数据交互。
HTTP请求/响应,是独立的,每次请求响应周期都是完全独立的。
会话:想办法,将数据可以在多次请求周期内,传递存储下来。
两种实现:
COOKIE(基础):Session:

COOKIE技术
基本原理
允许 服务器端程序(PHP) 在 浏览器上存储数据 的一种技术。

浏览器存储数据的技术,浏览器技术。
由服务器脚本(PHP)决定存储内容。
该数据存储好之后,典型的特征:在浏览器向该服务器发出请求时,会携带该服务器所存储的数据。
以上就是COOKIE技术。
在这里插入图片描述
基本操作
PHP基本操作
浏览器如何存储和如何携带,浏览器自身就实现了!和PHP没关系。

设置
函数:
setcookie(键, 值)
在这里插入图片描述
通过浏览器查看到COOKIE数据:
在这里插入图片描述
数据是在响应阶段被传输到浏览器端的:
在这里插入图片描述
Tip:增加,修改,删除,都使用该函数setcookie()完成!
获取
当PHP核心程序,接受到浏览器携带的COOKIE数据时,整理到超全局变量: $_COOKIE中。
在这里插入图片描述
在这里插入图片描述
每个元素,就是一个COOKIE数据,元素键,COOKIE名,元素值,COOKIE值!

获取的一定是浏览器请求时携带的:
参考浏览器的请求数据可见:
在这里插入图片描述
属性
有效期(重要)
默认:浏览器关闭(会话周期结束)时,COOKIE失效。也成之为:会话COOKIE(临时COOKIE)

同时:允许设置COOKIE的有效期,语法上,使用setcookie的第三个参数进行设置,通过unix时间戳(从1970年到现在的秒数,PHP函数time()来获取当前时间戳。)来设置COOKIE的有效期。
在这里插入图片描述
原理:
谁来判断该COOKIE是否过期?(是否在有效期内)
浏览器 OR 服务器?
是浏览器判断该COOKIE是否过期的。
在设置COOKIE时,同时将COOKIE的有效期,告知(传输)到浏览器端。
在这里插入图片描述
在这里插入图片描述
特殊值:
0:默认值,表示临时COOKIE。
PHP_INT_MAX常量值:PHP所能表示的最大整型(时间戳也是个整型,也是PHP能表示的最大时间戳)。
在这里插入图片描述
Time()-1: 删除COOKIE通用做法,强制设为过期。
在这里插入图片描述
在这里插入图片描述
额外的:PHP的setcookie支持将第二个参数设置为空字符串的方式,表示删除。(快捷语法语法糖)
在这里插入图片描述
有效路径(了解,使用较少)
默认的:
COOKIE:在当前目录及其后代目录有效。
语法使用空字符串表示默认值!
通过setcookie函数的第四个参数,进行设置。通常如果需要设置,就是将COOKIE设置为 / 根目录下有效,表示整站有效。否则只是子目录内可以得到上级目录的COOKIE值,上级目录没办法得到子目录内的COOKIE值
在这里插入图片描述
在sub目录下的sub_cookie_get.php文件可以得到sub_cookie_set.php内文件的COOKIE值以及其上级目录cookie_set.php文件内的值.而在cookie_get.php文件可以得到同级目录内cookie_set.php的值,无法得到sub文件夹下sub_cookie_set.php内的值
使用以下方法,将setcookie内第四个参数值设为 ‘/’,表示这个COOKIE值整站有效,这样就可以了
在这里插入图片描述
有效域(使用频率较高)
默认的:
某个域名下设置的COOKIE,仅仅可以在当前域名下所使用!
额外:
现在稍大点的网站,都会使用子域名(二级域名)的方式划分业务逻辑:
News.baidu.com. music.baidu.com, 就是baidu.com下的子域名(二级域名)
Test.kang.com, shop.kang.com,都是kang.com下的子域名。
COOKIE,支持在一级域名内(所有的二级域名之间)进行COOKIE数据共享。
使用 setcookie的第5个参数进行设置:
在这里插入图片描述
在这里插入图片描述
此时,浏览器端,存储方式:
在这里插入图片描述
是否仅安全连接(https)传输
告知浏览器,我们所设置的cookie,是否仅仅在https这个协议下,才会被发送到浏览器端!

是用 参数 第六个完成设置:默认值false,表示都可以(http和https)。(貌似apache不支持仅仅安全连接传输)
在这里插入图片描述
在这里插入图片描述
请求时:只有非安全连接才能传输的才会被发送到服务器端!
在这里插入图片描述
HTTPONLY
所设置好的COOKIE,是否仅仅在http请求时所使用。

COOKIE还可以通过浏览器端的脚本(javascript)获取到。
在这里插入图片描述
在这里插入图片描述
如果需要禁止,浏览器端其他脚本使用该cookie,则使用第七个参数即可:
在这里插入图片描述
总结
Setcookie(键,值,有效期=0,有效路径=‘’,有效域名=‘’,是否仅安全连接传输=false,是否HTTPonly=false)

语法细节
COOKIE仅仅支持字符串类型数据
可以转换成字符串的数据会执行自动类型转换。
在这里插入图片描述
办法:
Serialize()序列化。将某种特殊的数据类型,转换成字符串。
在这里插入图片描述
获取后,在反序列化unserialize():
在这里插入图片描述
$_COOKIE,仅仅用来存储浏览器请求时携带的COOKIE数据
当前脚本周期setcookie所设置的COOKIE变量,是不会出现在$_COOKIE中!
在这里插入图片描述
下载再请求:
在这里插入图片描述
COOKIE的使用
购物车。在未登陆的情况下,用来记录购物车内商品。
多长时间免登陆。
在这里插入图片描述
搜索习惯。搜索历史
需要长时间的存储会话的数据,通常使用COOKIE完成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值