【问题标题】:domain -> subdomain - passing session data域 -> 子域 - 传递会话数据
【发布时间】:2011-03-02 04:02:06
【问题描述】:

你好,这里有点麻烦。 我有 domain.co.uk 设置会话。当我单击 domain.co.uk 上的链接转到 sub.domain.co.uk 时,会话未被读取。

我已将 session.cookie_domain 更改为 .domain.co.uk 仍然无法正常工作。还有什么需要改变的吗?

问候, 我。

【问题讨论】:

  • 我已经看过了并且有 session_set_cookie_params(0, '/', '.domain.co.uk');在页面中。
  • 我有一个主页,其中包括取决于变量的文件以及它是否是子域(使用通配符 subs)。
  • 这两个域是否由同一个 PHP 代码库处理?
  • 遇到了同样的问题,发现这个答案对我有用:PHP Sessions across sub domains

标签: php session subdomain


【解决方案1】:

在您的 htacces 文件中

php_value session.cookie_domain ".domain.co.uk"

你就完成了

【讨论】:

  • 如果您只有没有 www 的 domain.co.uk 怎么办?这不会是个问题吗?
【解决方案2】:

关于存储在 cookie 中的会话 ID 的信息。如果 cookie 由主域设置,则子域无法读取 cookie。查看有关 session_name & setcookie 和 session_id() php 函数的信息。或者将会话 ID 存储在其他地方(例如 mysql 数据库) P.S.:对不起我的英语。

【讨论】:

    【解决方案3】:

    我同意 GOsha,

    我通过提交表单数据或存储在 SQL 中来完成所有会话移交。然后在新的域环境中重新创建会话。

    我不确定 100% 是否有更简单的方法?

    不确定这是否有帮助。

    肖恩

    【讨论】:

    • 将其作为表单数据传递需要通过 SSL 传递,否则可能会执行会话劫持,除非它被序列化和加密等。
    【解决方案4】:

    会话数据存储在 cookie 中,如果您在域 google.com 上,则只有域 google.com 可以访问 cookie 会话数据,例如用户名或会话 ID。

    dev.google.com 无法访问 google.com 的 cookie,这意味着登录 google.com 的用户在访问 dev.google.com 时不会登录。除非有某种机制,例如将查询字符串中的会话 ID 传递给 dev.google.com。

    【讨论】:

      【解决方案5】:

      这个简单的代码会对你有很大帮助,试试吧。它会 100% 工作。

      <?php 
      session_set_cookie_params(0, '/', '.domain.co.uk'); 
      session_start(); 
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-20
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 2018-11-21
        • 1970-01-01
        相关资源
        最近更新 更多