【问题标题】:Two domains, same data. PHP Application loses Session vars on only one of them, how?两个域,相同的数据。 PHP 应用程序仅在其中一个上丢失会话变量,如何?
【发布时间】:2013-10-03 07:45:01
【问题描述】:

我有两个域指向 Web 服务器上的相同数据。我自己不托管 Web 服务器,但应用程序是由我构建的。应用程序只需启动会话,打印会话数组,然后在会话中设置一个变量。当你第一次启动它时它是空的,当你刷新它时,打印的数组会显示刷新之前设置的值。这适用于 domain1,但对于 domain2,打印的数组保持为空。这怎么可能?

这些不是子域。它们是完整的 www.domain1.com 和 www.domain2.com 域。

网络服务器是 Apache(我对 Apache 一无所知,但欢迎任何我可以传递给我的主机的答案)。 该应用程序是 PHP 5。

一些额外信息:我有一个用于 DirectAdmin 的经销商帐户。 Domain1(工作的那个)有自己的数据,Domain2(不工作的那个)有一个指向Domain1数据的VHost。我自己无法管理 VHost,但由于这是一个 SaaS 应用程序,所有域都应该指向同一个软件,所以托管公司可以像这样设置它。我不知道这是否相关,但我想分享一下。

【问题讨论】:

    标签: php apache session


    【解决方案1】:

    Cookie 是使用域设置的。在 domain1.com 上设置的内容不适用于 domain2.com。 PHP 会话通常存储在 PHPSSID cookie 中,这可以解释问题。

    查看您的 cookie,您会发现它们已链接到域。查找 domain1.com PHPSSID。

    【讨论】:

    • 我不想在不同域之间共享会话。我只是希望在 domain2 中记住我在 domain2 上的会话变量。不是这种情况。它适用于 domain1,但 domain2 似乎在每次页面刷新时都会丢失其会话变量。
    • 好吧,即使你使用不同的域,使用后面会话的机器是一样的。也许它会因为从“不同的地方”收到相同的 PHPSSID 而感到困惑。也许您可以尝试使用session_regenerate_id(true)
    猜你喜欢
    • 1970-01-01
    • 2019-06-01
    • 2019-10-28
    • 2018-06-21
    • 2018-03-20
    • 2016-12-26
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多