没有为一个用户保存PHP会话

时间:2013-03-06 15:56:31

标签: php session

我有一个奇怪的问题。我有一个网页,在主页面上为每个访问的用户设置会话变量,然后在接下来的页面上,如果设置了会话变量,则会显示一些内容,而其他一些则不会。我设置的变量只是一个“1”。

 $_SESSION['user_id'] = $user_id;

一切都很简单,一切都很好,但我有这个用户,服务器不保存会话变量。据我所知,只有一个人。什么可能导致这种行为?如果重要的话,他正在使用mac,但在其他mac上,网站效果很好。

感谢。

2 个答案:

答案 0 :(得分:4)

当您致电session_start()时,PHP会设置一个仅包含PHPSESSID变量集的Cookie。此变量用于使用服务器上的会话数据标识客户端浏览器。如果您的用户已禁用cookie,则无法通过GET或POST在每个请求中来回传递PHPSESSID来使用会话。

答案 1 :(得分:0)

HTTP是无状态协议。 IF会话只在服务器端,它怎么能区分用户?

[ HTTP是无状态协议意味着:HTTP请求从服务器响应,它会忘记发送请求的人,来自哪里。]

这就是cookie存储会话ID的原因。

换句话说,如果用户禁用了cookie,他就不允许PHP为自己设置会话。这就是背后的原因。