【问题标题】:PHP Session Data loses without http [duplicate]没有http的PHP会话数据丢失[重复]
【发布时间】:2013-10-19 00:20:56
【问题描述】:

我的 php 会话有一个小问题 - 当我登录 http://www.domain.com 时它可以工作,但是当我删除 http://www. 部分时,我必须重新登录。

我需要在 php.ini 中更改什么,以便无论http://www. 是否存在,我都可以保持登录状态?

【问题讨论】:

  • www 的行为类似于子域,因此www.domain.comdomain.com 在技术上存在差异
  • 我会使用 .htaccess 文件将您的用户重定向到一个域或另一个域。

标签: php session


【解决方案1】:

那是因为您的 cookie 设置在 www.domain.com 上,登录后您正尝试从 domain.com 访问它。浏览器会阻止它。

您必须通过将.domain.com 设置为5. 来声明子域可以访问cookie。setcookie() 的参数。

【讨论】:

  • 我添加了 session_set_cookie_params(0, '/', '.domain.com');但遗憾的是它没有用。有没有办法让会话在 2 个 url 上运行?
  • @Codemunkie 你在开始会话之前设置了吗?
  • 是的,我做到了,在 session_start() 之前的顶部;
  • @Codemunkie 检查您的会话是否没有自动启动(例如,在 php.ini 中或通过打开错误报告并检查 session_start() 是否没有打印通知。
【解决方案2】:

您可能需要检查 php ini 变量:session.cookie_domain,它可能被设置为仅适用于完整域,请尝试仅将其设置为子域。

【解决方案3】:

我已经这样做了(可能不是最好的解决方案,但确实可以)

在 .htaccess 中

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

所以它删除了 www。从域并重定向到 http。 :)

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 2013-08-10
    相关资源
    最近更新 更多