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