一:会话技术初步认识
会话技术介绍: web会话可以简单理解为:用户打开一个浏览器,访问某一个web站点,在这个站点点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
HTTP协议的特点是无状态/无连接,当一个浏览器连续多次请求同一个web服务器时,服务器是无法区分多个操作是否来自于同一个浏览器(用户)。会话技术就是通过HTTP协议想办法让服务器能够识别来自同一个浏览器的多次请求,从而方便浏览器(用户)在访问同一个网站的多次操作中,能够持续进行而不需要进行额外的身份验证。
会话技术分类:
1). cookie技术
cookie技术是在HTTP协议下,服务器或脚本可以维持客户工作站上信息的一种方式,cookie是由Web服务器保存在用户浏览器(客户端)上的小文本文件(HTTP协议响应头),它可以包含有关用户的信息。无论何时用户链接到服务器,Web站点都可以访问cookie信息。
2). session技术
session直接翻译成中文比较困难,一般都翻译成时域,在计算机专业术语中,session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经历的时间。以及如果需要的话,可能还有一定的操作空间。session技术是将数据保存到服务器端,无论何时用户链接到服务器,Web站点都可以访问session信息。session技术的实现是依赖cookie技术的。
3). 两种会话技术的区别
a). 安全性方面:
session存储在服务器端,安全性高
cookie存储在浏览器端,安全性低
b). 数据大小方面
session数据存储不限
cookie的数量和大小都有限制(一个网站最多20个cookie,长度最多4k)
c). 可用数据类型
session 可以存复杂数据(自动序列化)
cookie只能存储简单数据,数值或字符串
二:PHP 的 COOKIE 技术
(1). COOKIE 工作原理
cookie技术:服务器将数据通过HTTP相应到浏览器上,浏览器可以在以后携带对应的cookie数据访问服务器。
1、第一次请求时,PHP通过setcookie函数将数据通过http协议响应头传输给浏览器
2、浏览器在第一次响应的时候将cookie数据保存到浏览器
3、浏览器后续请求同一个网站时,会自动检测是否存在cookie数据,如果存在,就将在请求头中将数据携带到服务器
4、PHP执行时会自动判断浏览器请求中是否携带cookie,如果携带,则自动保存在$_COOKIE中
5、利用$_COOKIE访问cookie数据

(2). COOKIE 基本使用
设置COOKIE信息
setcookie()函数用来设定cookie信息
其参数为: setcookie(名字, 值)
1). cookie名的设置: 字符串, 第一个参数
2). cookie值的设置: 第二个参数
3). cookie值的类型要求: 必须是简单类型中的整数或者字符串
以下是演示:
打开浏览器设置,查看网站cookie信息,可见cookie已经设置成功了。


读取COOKIE信息
可以使用$_COOKIE数组获得COOKIE信息。
由下图可见,因为setcookie.php文件和getcookie.php文件在同一服务器下,所以getcookie.php可以拿到setcookie.php设置的cookie信息。

(3). COOKIE 高级——生命周期
COOKIE生命周期:COOKIE在浏览器生存时间(浏览器在下次访问服务器时是否携带对应的COOKIE)
1). 默认(不设定)时的生命周期:不设定周期默认是关闭浏览器(即会话结束)
2).设定为一个常规日期戳的周期: 通过setcookie函数第三个参数可以限定生命周期,是用时间戳管理,从格林威治时间开始
3).设定为“0”的周期:设置生命周期时用0代替时间戳,表示普通设置,会话结束就过期
4).删除一个cookie的做法:服务器没有权限去操作浏览器上的内容,因此无法直接删除,但可以通过设置生命周期来让浏览器自动判定cookie是否有效,无效的话浏览器会自动清除。

(4). COOKIE 高级——作用范围
作用范围:不同的文件夹层级中,设定的COOKIE默认是在不同文件夹下有访问限制,上层文件夹中设定的COOKIE可以在下层(子文件夹)中访问,而子文件夹中设定的COOKIE不能在上层文件夹中访问。
setcookie(名字, 值, 生命周期, 作用范围)
1). 默认(不设定)的范围: 就是使用COOKIE默认的作用范围
2). 设定为 “/” 的含义: 告知浏览器当前COOKIE的作用范围是网站根目录,在setcookie的第四个参数里设置。例如下面的设置,该cookie名为password,值为12345,7天后过期,作用范围是网站根目录,即网站下所有页面都可以访问该cookie。
setcookie('password', 12345, time() + 7*24*60*60, '/');
(5). COOKIE 高级——跨子域
跨子域:在同一级别域名下,一个一级域名可以有多个子域名,他们之间是搭建在不同服务器上,比如腾讯官网是www.qq.com,腾讯公益是gongyi.qq.com。它们之间是搭建在不同服务器上的,但是可以通过COOKIE设置实现对应的COOKIE共享访问(默认是不允许的)。
1). 设定cookie的有效域名:不同域名(包含主机)之间不能共享COOKIE,可以通过设置setcookie的第五个参数来控制。

本文深入讲解了会话技术的基本概念及应用,包括cookie与session的工作原理、生命周期、作用范围等核心知识点,帮助读者掌握跨脚本共享数据的技术细节。
最低0.47元/天 解锁文章
1710

被折叠的 条评论
为什么被折叠?



