首页 » PHP和MySQL Web开发(原书第4版) » PHP和MySQL Web开发(原书第4版)全文在线阅读

《PHP和MySQL Web开发(原书第4版)》23.2 理解基本的会话功能

关灯直达底部

PHP的会话是通过唯一的会话ID来驱动的,会话ID是一个加密的随机数字。它由PHP生成,在会话的生命周期中都会保存在客户端。它可以保存在用户机器里的cookie中,或者通过URL在网络上传递。

会话ID就像一把钥匙,它允许我们注册一些特定的变量,也称为会话变量。这些变量的内容保存在服务器端。会话ID是客户端唯一可见的信息。如果在一次特定的网站连接中,客户端可以通过cookie或URL看到会话ID,那么我们就可以访问该会话保存在服务器上的会话变量。在默认情况下,会话变量保存在服务器上的普通文件中。(如果愿意编写自己的函数,我们可以改变这种情况,使用数据库来保存这些变量——在“配置会话控制”一节将详细介绍该内容。)

我们可能曾经使用过一些网站,它们将会话ID保存到URL中,如果在URL中有一串看起来像随机数字的字符串,可能它就是某种形式的会话控制。

cookie是与会话不同的解决方法,它也解决了在多个事务之间保持状态的问题,同时,它还可以保持一个整洁的URL。

23.2.1 什么是cookie

cookie其实就是一小段信息,它可以由脚本在客户端机器保存。可以通过发送一个包含特定数据并且具有如下格式的HTTP标题头,从而在用户端机器设置一个cookie:

Set-Cookie:NAME=VALUE;[expires=DATE;][path=PATH;]

[domain=DOMAIN_NAME;][secure]

这会创建一个名为NAME,值为VALUE的cookie。除了该参数,其他参数都是可选的。expires域设置该cookie失效日期(请注意,如果失效日期不设置,cookie将永远有效,如果不手动将其删除的话)。path和domain域合起来指定URL或与cookie相关的URL。secure关键字的意思是在普通的HTTP连接中不发送cookie。

当浏览器连接一个URL时,首先要搜索当地保存的cookie。如果有任何与正在连接的URL相关的cookie,浏览器将它提交到服务器。