首页 > 编程笔记 > PHP笔记

PHP Session入门教程

Session 存储在服务端,本质上和 Cookie 没有区别,都是针对 HTTP 协议的局限性而提出的一种保持客户端和服务端间会话状态的机制。

Session 经常用来在网站的上下文间实现页面变量的传递、用户身份认证、程序状态记录等,常见的有配合 Cookie 使用、实现保存用户的登录状态或者记录用户的购物下单信息等。

在使用 Session 之前必须先开启 Session,可使用 session_start() 开启 Session,同 Cookie 一样,在开始之前不能有任何输出内容,否则会出现如下警告:

Warning: session_start(): Cannot send session cookie - headers already sent

也可以修改 php.ini 中的session.auto_start=0session.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,可以继续阅读:

所有教程

优秀文章