我有一个奇怪的问题。我有一个网页,在主页面上为每个访问的用户设置会话变量,然后在接下来的页面上,如果设置了会话变量,则会显示一些内容,而其他一些则不会。我设置的变量只是一个“1”。
$_SESSION['user_id'] = $user_id;
一切都很简单,一切都很好,但我有这个用户,服务器不保存会话变量。据我所知,只有一个人。什么可能导致这种行为?如果重要的话,他正在使用mac,但在其他mac上,网站效果很好。
感谢。
答案 0 :(得分:4)
当您致电session_start()
时,PHP会设置一个仅包含PHPSESSID
变量集的Cookie。此变量用于使用服务器上的会话数据标识客户端浏览器。如果您的用户已禁用cookie,则无法通过GET或POST在每个请求中来回传递PHPSESSID
来使用会话。
答案 1 :(得分:0)
HTTP是无状态协议。 IF会话只在服务器端,它怎么能区分用户?
[ HTTP是无状态协议意味着:HTTP请求从服务器响应,它会忘记发送请求的人,来自哪里。]
这就是cookie存储会话ID的原因。
换句话说,如果用户禁用了cookie,他就不允许PHP为自己设置会话。这就是背后的原因。