【问题标题】:PHP Session empty in one computer, but not another. Weird!一台计算机上的 PHP 会话为空,但另一台计算机上没有。诡异的!
【发布时间】:2009-10-07 18:13:47
【问题描述】:

问题是我有一个 PHP 脚本 (A) 进行注册,授权 Twitter,然后 twitter 回调返回 PHP 脚本 (B)。 在脚本 (A) 中,我设置了一些 $_SESSION 变量,在脚本 (B) 中我会得到它。非常直截了当。 我已经在我的电脑上测试过,一切正常。我可以看到脚本(A)设置的脚本(B)中的会话变量。所以作为我的朋友。 但是,最重要的是,我老板的电脑看不到!那是最糟糕的。他也尝试了他的电脑,仍然没有工作。

我什至重新启动并重新启动服务器,但情况仍然相同。

所以,我的问题是,服务器不能在计算机上设置会话是否有任何限制?或者,..在哪种情况下,服务器将无法设置会话?

服务器:Apache 2.2.3。使用 Plesk PHP:5.2.5

【问题讨论】:

  • “然后 twitter 回调一个返回的 PHP 脚本”是什么意思?
  • 基本上,应用程序使用 Twitter 进行注册。所以,... Script (A) -> redirect to Twitter , Twitter 重定向回 (B) 实际上,对于那部分来说并不重要。 :) 在脚本 (A) 和脚本 (B) 中,我都有 session_start()。通常,无论我在脚本(A)中设置什么 $_SESSION,我都可以在脚本(B)中得到它。这在我的电脑和我朋友的电脑上都没有问题。但是我老板的电脑在 (B) 中看不到 $_SESSION 变量。

标签: php apache session


【解决方案1】:

也许是个愚蠢的问题,但无论如何……你的老板会在他的电脑上阻止 cookie 吗?

如果是这种情况并且由于某种原因 PHP 被设置为不“回退”以通过查询字符串传递会话 ID(或重定向以某种方式剥离它),那可能是一个问题。

【讨论】:

  • 没有。没有块。我只是检查一下。 sessionid 改变是个问题。很奇怪。
【解决方案2】:

会话 ID 在不同的计算机上是不同的,因为这是会话背后的想法。您为每个访问者分配一个编号(会话 ID),通过该编号您可以识别用户并将信息存储在每个用户 $_SESSION 数组中。此数组仅适用于该单个会话/用户。

如果您想为您网站的所有访问者存储数据,您可能需要使用数据库或服务器端缓存。

【讨论】:

    【解决方案3】:

    由于是会话失败,请检查客户端是否在每个请求上使用相同的会话,而不是新的会话。检查会话ID是否正确携带。如果您使用会话 cookie,请检查其有效性设置并查看客户端是否接受会话 cookie。见PHP Session/Cookie problems with Windows XP, Vista, IE and certain users

    【讨论】:

    • 是的.. 这是同一个会话。 (应该是。否则,它不会在我和我朋友的电脑上工作。我也已经在代码中检查并确认了)。
    猜你喜欢
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 2017-02-05
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    相关资源
    最近更新 更多