会话保存在哪里?

Moe*_*ini 40 php browser cookies session

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

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

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

Pek*_*ica 76

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

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

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

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

  • 如果禁用cookie,会话ID将附加到所有页面请求. (7认同)
  • @Martijn这不是会话的默认行为.这需要更多的代码来完成你的工作 (2认同)
  • 正确,如果 cookie 不可用,会话 ID 将通过 URL 和隐藏的表单输入传递。这是由 PHP 自动处理的。见 http://www.php.net/manual/en/session.idpassing.php (2认同)

dec*_*eze 11

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

  • 所以它不是两者兼而有之。只是一个帮助我们知道会话属于谁的 id 并不一定意味着会话同时存储在客户端和服务器端。因此,它不是在服务器端而是在 cookie 中存储唯一 ID,而 cookie 存储在客户端。 (2认同)

小智 6

引用“会话数据存储在服务器还是客户端浏览器上?”

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

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