1

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

 $_SESSION['user_id'] = $user_id;

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

谢谢。

4

2 回答 2

4

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

于 2013-03-06T16:01:39.470 回答
0

HTTP 是一种无状态协议。如果会话只在服务器端,它如何能够区分用户?

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

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

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

于 2013-03-06T16:04:00.263 回答