为什么要用到会话控制技术?
1.由于http协议的无状态性,使得不能通过协议来建立两次请求之间的关联;
2.对于通常的页面之间的数据传递方式get和post而言,主要处理参数的传递、资料的输入两个页面间简单的数据传递,对于一个用户的在网站上的多个页面,多种不同的数据,可能还有权限的不同而导致页面的不同、操作方式的不同等等,使用get和post非常繁琐。
会话控制技术常用方法
cookie技术,session技术,redis缓存等。
COOKIE的基本使用
Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息
COOKIE原理
1、 第一次请求时,PHP通过setcookie函数将数据通过http协议响应头传输给浏览器
2、 浏览器在第一次响应的时候将Cookie数据保存到浏览器
3、 浏览器后续请求同一个网站的时候,会自动检测是否存在Cookie数据,如果存在将在请求头中将数据携带到服务器
4、 PHP执行的时候会自动判断浏览器请求中是否携带Cookie,如果写到,自动保存到$_COOKIE中
5、 利用$_COOKIE访问Cookie数据
SESSION原理
Session直接翻译成中文比较困难,一般都译成时域。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。以及如果需要的话,可能还有一定的操作空间。Session技术是将数据保存到服务器端,无论何时用户链接到服务器,Web站点都可以访问Session信息
Session与浏览器无关,但是与Cookie有关。
1、 PHP碰到session_start()时开启session会话,会自动检测sessionID
a) 如果Cookie中存在,使用现成的
b) 如果Cookie中不存在,创建一个sessionID,并通过响应头以Cookie形式保存到浏览器上
2、 初始化超全局变量$_SESSION为一个空数组
3、 PHP通过sessionID去指定位置(session文件存储位置)匹配对应的文件
a) 不存在该文件:创建一个sessionID命名文件
b) 存在该文件:读取文件内容(反序列化),将数据存储到$_SESSION中
4、 脚本执行结束,将$_SESSION中保存的所有数据序列化存储到sessionID对应的文件中
SESSION和COOKIE 会话技术区别
1) 安全性方面
a) Session存储服务器端,安全性高
b) Cookie存储浏览器段,安全性低
2) 数据大小方面
a) Cookie的数量和大小都有限制(20个/4K)
b) Session数据存储不限
3) 可用数据类型
a) Cookie只能存储简单数据,数值/字符串
b) Session可以存储复杂数据(自动序列化)
4) 保存位置方面
a) Cookie保存在浏览器上
b) Session保存在服务器上
当需要跨服务器会话是可以使用redis缓存,甚至mysql等保存会话状态。
网友评论