PHP之Session
1.什么是session
session在计算机中,尤其是在网络应用中,称为会话控制。具体到web的session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义可以看到,session是一个特定的时间概念。
2.为什么要使用session
- HTTP协议是一个无状态的协议,即同一个客户端的本次请求和上次请求没有对应关系,HTTP服务器并不知道这两个请求来自同一个客户端。这样其优点是在于减轻服务器压力;缺点在于每次请求会传输大量重复的内容信息
- SESSION提供在PHP脚本中定义全局变量的方法,使得这个全局变量在同一个SESSION中对于所有的PHP脚本内容都有效,所以SESSION是基于HTTP服务器的用于保持状态的方法。
- SESSION允许通过将数据存储在HTTP服务器中,以在整个用户会话过程中保持该数据,所以SESSION不仅是一个时间概念,还包括了特定的用户和服务器。
3.session的工作原理
4.与SESSION相关的函数
- session_destroy删除一个回话中的全局数据
- session_name读取/设置会话名称
- 语法:string session_name([string $name]);
- 如果指定$name参数,session_name()函数会更新会话名称,并返回原来的会话名称
- 必须在调用session_start()函数之前调用session_name()函数
- session_id获取/设置当前会员id
- string session_id([string $id]);
- 如果指定$id参数的值,则使用指定值作为会话ID
- 必须在调用session_start()函数之前调用session_id函数
5.会话识别符
- 会话由一个唯一标识符,可以使用session_id函数读取此标识符。为PHP应用程序启用会话状态时,将检查应用程序中每个页面请求是否有浏览器发送的sessionID。如果未提供任何sessionID值,则PHP将启动一个新会话,并将该会话的sessionID值随响应一起发送到浏览器。
- 默认情况下,sessionID值存储在Cookie中;也可以实现在URL中存储sessionID。
- 只要一直使用相同的sessionID值来发送请求,会话就被视为活动的;如果特定会话的请求间隔超过特定的超时值,则该会话被视为已经过期。如果使用过期的sessionID值发送的请求将产生一个新的会话。
6.PHP配置中的session片段