会话保存在哪里?

时间:2011-04-08 09:50:54

标签: php session browser cookies

我想知道PHP会话数据的保存位置;是在客户端浏览器中?还是在服务器上?

当我在浏览器设置中禁用cookie时,PHP无法保存会话数据,但在php.ini中,我可以更改会话保存路径。

会话数据是否存储在服务器或客户端浏览器上?

5 个答案:

答案 0 :(得分:74)

使用$_SESSION读取和写入的会话数据存储在服务器端,通常存储在临时目录中的文本文件中。他们无法从外面访问。

将会话连接到客户端浏览器的是会话 ID ,它通常存储在cookie中(请参阅该规则的例外注释)。这个ID是,也应该是存储在客户端的会话的唯一内容。

如果您在浏览器中删除了cookie,那么即使服务器上的文件仍然存在一段时间,该会话的连接也会丢失。

session.save_path变量会影响存储会话数据的服务器上的位置。如果您不是服务器的管理员,通常不需要更改它。

答案 1 :(得分:11)

两者都是!会话将实际会话信息保存在服务器上,但会向客户端提供标识cookie以了解哪个会话属于哪个客户端。 cookie本身的信息毫无价值,但允许服务器识别客户端并使用实际的会话信息。

答案 2 :(得分:5)

  

Blockquote“会话数据是否存储在服务器或客户端浏览器上?”

这让我想起了代客泊车系统。代客(服务器)保留您的汽车(会话数据),但他/她会给您一张票(会话ID)以便在您需要访问时证明该车是您的。如果您丢失了机票(通过删除缓存或关闭浏览器),您的汽车(会话数据)就一样好了,因为您无法证明它是您的汽车了。

好的,这只是一个类比......而且很快崩溃了。例如。你实际上并没有像开车那样拥有自己的会话信息。你不能把它赶走。

答案 3 :(得分:4)

两者都将客户端(浏览器)中的会话保存为cookie。此cookie引用也驻留在服务器上的会话。

答案 4 :(得分:1)

它存储在服务器端以保持安全;但是额外的cookie也可以存储在客户端。