扫码一下
查看教程更方便
在 php 中,session 是一种服务器端的机制,服务器使用一种散列表的结构(类似于 json)来保存信息。相比于保存在客户端的 cookie,session 将用户交互信息保存在了服务器端,使得同一个客户端每次和服务端交互时,不需要每次都传回所有的 cookie 值,而是只需要传回一个 id 即可,这个 id 是客户端第一次访问服务器的时候生成的,而且是唯一的。
还有一点就是,因为 cookie 存储在客户端,所以用户有权禁用 cookie,而 session 是存储在服务器端的,用户无法禁用。
我们可以使用 php 脚本创建和存储 session 中的数据。在创建一个 session 后,所有 session 变量在用户一次会话期间里访问的所有页面都有效。其工作机制如下图所示。
session 默认会以文本的形式存储在服务器的临时目录中,文件名以“sess_”作为前缀,后面加上“session id”,例如“sess_t5is1r7ct740dn390kuv3mpcse”。
我们可以在 php.ini 中找到 session 的相关配置,下面是一些常用的配置信息:
session.save_handler = files #session 的存储方式,默认是文件,还可以是 redis 或者是 memcache
session.save_path = "d:/wamp/tmp" #session 文件的存储目录
session.use_cookies = 1 #是否使用 cookie 存储 session_id
session.name = phpsessid #客户端存储 session_id 的会话名
session.auto_start = 0 #是否自动开启 session
session.cookie_lifetime = 0 #设置客户端中存储的 session_id 的过期时间,以秒为单位
session.use_only_cookies=0 #是否只使用 cookie 来处理 session_id
session.gc_divisor = 1000 #进程比率
session.gc_probability = 1 #垃圾回收的处理几率
session.gc_maxlifetime = 1440 #设置 session 文件的过期时间
session 在以下情况会被删除,也就是失效: