- 什么是会话控制
- 面向连接的可靠通信方式,根据会话控制记录,判断用户的登录行为;
- 能够在网站中跟踪用户,处理同一个网站同一个用户在多个页面共享数据的机制;
- 为什么使用会话控制
- http协议是无状态协议,没有内建机制来维护两个事务之间的状态;
- 会话控制避免重复执行登录操作,让服务器跟踪同一客户端做出连续请求;
- PHP中会话控制方式
- cookie的应用
- Cookie是服务器发送给客户端的片段信息,储存在客户端浏览器内或者硬盘上。在客户对改服务的请求中发回;将使用者的资料储存在客户端,提高网页的处理效率,降低服务器的负担;
- 向客户机器中设置cookie
- 浏览器支持cookie功能
- PHP中使用setCookie()函数,必须在其他信息输出到浏览器之前调用
- 常用参数
- $name 可以使用空字符串跳过;
- $expire 与 $secure 是整型数据,可以使用0来跳过;
- $expire 参数是标准的unix时间戳,可以由time()来返回值;
- PHP脚本读取cookie内容
- 通过全局数组$_COOKIE进行访问
- 删除cookie值
- session的应用
- 概述
- session保存在服务端,cookie保存在客户端
- 用户可以终止cookie,不能终止session
- sessionID是不易重复和不易有规律的32为十六进制数
- php.ini文件中配置session
- session的声明和使用
- 要设置session必须启动session_start()函数
- 运行原理:sessionID由服务器创建,返回给用户保存在cookie中,并且在服务器端生成一个名为sessionID 的文件,保存用户的信息。当客户端再次发出请求时,HTTP请求头携客户端中的cookie中的sessionID值,在服务器中检索读取,达到跟踪用户的目的;
- 注册会话变量session
- 注销变量与销毁session
- Session_destroy()函数结束当前会话,并清空会话中所有的资源。
- 会删除相关的session文件;
- 不会销毁$_SESSOIN 中的变量,也不会删除客户端的cookie和sessionID,可以手动清理变量值;
- 注销session4步骤:
1. session自动回收机制
1. 直接关闭浏览器或者断网的情况下,session相关文件不会被删除;
1. Php.ini中的session.cookie_lifetime = 0设置了cookie中sessionID的有效期,即直到浏览器关闭为止。
1. 对于永远也用不上的垃圾文件,系统由自动清理机制。
1. session.gc_maxlifetime = 1440 默认时间
1. Session.gc_divisior=1000,设定垃圾回收启动的概率,在每次访问的时候默认位1/1000;
- sessionID的传递
- 通过sessionID跟踪用户,各个页面传递唯一的sessionID
- 会话技术总结
- web会话:用户开一个浏览器,访问某个web站点
- 会话技术就是通过http协议让服务器识别同一浏览器的多次请求
- 会话技术分类
- cookie
- Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件(HTTP协议响应头),它可以包含有关用户的信息。无论何时用户链接到服务器(HTTP请求携带数据),Web 站点都可以访问 Cookie 信息
- session
- Session直接翻译成中文比较困难,一般都译成时域。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。以及如果需要的话,可能还有一定的操作空间。Session技术是将数据保存到服务器端,无论何时用户链接到服务器,Web站点都可以访问Session信息:SESSION技术的实现是依赖COOKIE技术的
- 两种会话技术区别
- 安全性方面
- Session存储服务器端,安全性高
- Cookie存储浏览器端,安全性低
- 数据大小方面
- Cookie的数量和大小都有限制(20个/4K)
- Session数据存储不限
- 可用数据类型
- Cookie只能存储简单数据,数值/字符串
- Session可以存储复杂数据(自动序列化)
- 保存位置方面
- Cookie保存在浏览器上
- Session保存在服务器上
- cookie的基本使用
- cookie原理
- 第一次请求时,PHP通过setcookie函数将数据通过http协议响应头传输给浏览器
- 浏览器在第一次响应的时候将Cookie数据保存到浏览器
- 浏览器后续请求同一个网站的时候,会自动检测是否存在Cookie数据,如果存在将在请求头中将数据携带到服务器
- PHP执行的时候会自动判断浏览器请求中是否携带Cookie,如果写到,自动保存到$_COOKIE中
- 利用$_COOKIE访问Cookie数据
- 设置cookie信息
- cookie名的设置:字符串,第一个参数
- cookie值的设置:第二个参数
- cookie值的类型要求:必须是简单类型中的整数或者字符串
- session原理
- PHP碰到session_start()时开启session会话,会自动检测sessionID
- 如果Cookie中存在,使用现成的
- 如果Cookie中不存在,创建一个sessionID,并通过响应头以Cookie形式保存到浏览器上
- 初始化超全局变量$_SESSION为一个空数组
- PHP通过sessionID去指定位置(session文件存储位置)匹配对应的文件
- 不存在该文件:创建一个sessionID命名文件
- 存在该文件:读取文件内容(反序列化),将数据存储到$_SESSION中
- 脚本执行结束,将$_SESSION中保存的所有数据序列化存储到sessionID对应的文件中