Session 经常用来在网站的上下文间实现页面变量的传递、用户身份认证、程序状态记录等,常见的有配合 Cookie 使用、实现保存用户的登录状态或者记录用户的购物下单信息等。
在使用 Session 之前必须先开启 Session,可使用 session_start() 开启 Session,同 Cookie 一样,在开始之前不能有任何输出内容,否则会出现如下警告:
Warning: session_start(): Cannot send session cookie – headers already sent
也可以修改 php.ini 中的session.auto_start=0
为session.auto_start=1
,设置自动开启 Session 支持,这样就不必每次在使用 Session 的时候都加上 session_start() 了。
Session 的设置非常简单,可以直接使用以下形式:
$_SESSION[key]=value
其中 key 表示 Session 的键,所有设置的 Session 都存储在全局数组 $_SESSION 中。
当在代码中设置了 Session 时,在 HTTP 请求的消息头中会携带一个名为 PHPSESSID 的 Cookie,其值是一个 32 位十六进制的字符串。每个客户端向服务器请求时都会产生一个不同的值,如果清除浏览器的 Cookie,再次刷新页面时将会重新设置一个 PHPSESSID 的值。
服务端接收到这个 Cookie,根据其值在服务器中找到对应的 Session 文件,从而实现保持与客户端链接状态的信息,其中 Session 中存储着序列化的 Session 键值等信息。
设置了 Session 的 HTTP 请求消息头如下:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:PHPSESSID=4680c9df2ce9ac4d1aa7f366bd92d83a
Host:localhost
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36
如果读者想深入学习 Session,可以继续阅读:
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/23361.html