### Session 的工作方式

下面我们来看一下 Session 是如何工作的。不知你是否知道通过 Cookie 来实现身份认证的吧。首先生成一个独一无二的 Cookie 作为用户身份的标志，并在数据库中进行注册。然后通过用户传递来的 Cookie 和数据库中注册的 Cookie 进行对照以确定用户的身份。
Session 的工作原理也是这样。
首先，PHP 为建立 Session 的用户产生一个独一无二的字符串，用来标志这个用户的 session。一般将这个字符串称作 Session Id。然后“sess”+Session Id 为文件名（例如一个 Session ID 为 111，那么文件名为 sess_111）在服务器的文件系统中建立一个文件，在文件中保存用户在 Session 所定义的全局变量的变量名和值。然后再将 Session Id 作为一个名为 PHPSession 的 Cookie 保存在用户端的文件系统中。
然后，当用户再次连接服务器访问一个 PHP 脚本时，PHP 从用户发来的 PEESession 这个 Cookie 中得到用户所在 Session 的 Session Id，并根据 Session Id 从服务器的文件系统中保存 Session 信息的文件。最后从这个文件中读出用户在上次连接时所设置的全局变量的值。
因此，我们可以看到 Session 的工作原理和我们上一节所介绍的身份认证的工作原理是一样的。所不同的只是 Session 将信息保存在了服务器的文件系统中，而我们将信息保存在了数据库中。当然使用 Session 好处就是数据的保存和获取是由 PHP 自动完成的，而直接使用 Cookie 的话就需要自己动手进行数据的保存和获取。
Session 利用 Cookie 的身份标志功能，将用户在浏览网站时需要保存的信息保存在服务器上。这样 Session 既克服了 HTTP 协议的缺陷，又防止了信息的泄漏，而且方便了编程者的使用，是一个非常好的解决方案。不过，Session 的功能只有 PHP4 支持，PHP3 是不支持 Session 的。因此使用 PHP3 进行网站构建的读者只能采用直接使用 Cookie 的方式。