【问题标题】:Cookies across subdomains with Redirect使用重定向跨子域的 Cookie
【发布时间】:2012-04-03 08:04:10
【问题描述】:

在我的主页 www.website.com 我有一个登录表单,它注册了一个会话:

ini_set('session.gc_maxlifetime', 7200);//set cookie lifetime to 2 hours
ini_set("session.cookie_lifetime", 7200);
ini_set("session.cookie_httponly", 1);//set cookie httponly
ini_set("session.cookie_domain", ".website.com");
session_start();
$_SESSION['login']='yes';
header('Location: http://panel.website.com/');

因此用户将被重定向到http://panel.website.com。我有以下代码:

ini_set('session.gc_maxlifetime', 7200);//set cookie lifetime to 2 hours
ini_set("session.cookie_lifetime", 7200);
ini_set("session.cookie_httponly", 1);//set cookie httponly
ini_set("session.cookie_domain", ".website.com");
session_start();
if (!isset($_SESSION['login'])) {
    header('Location: http://www.website.com/error.php' );
    exit();
}

所以问题是:子域无权访问会话,用户总是被重定向到 website.com/error.php。

我应该改变什么?我尝试了 session.cookie_domain,但它不起作用。如果您需要更多信息(如 phpinfo 数据),请告诉我。

谢谢!

【问题讨论】:

  • 您是否将路径都设置为/
  • 你用哪个浏览器测试这个?

标签: php session subdomain


【解决方案1】:

从这里:PHP Sessions across sub domains 设置会话名称似乎可以解决它。

$some_name = session_name("some_name");
session_set_cookie_params(0, '/', '.website.com');
session_start();

【讨论】:

  • 会话名称不应该有所作为,所以我想知道为什么它被建议作为答案。链接的问题并没有从我在那里读到的内容中说明这一点。
  • 问题解决:主机白痴禁用会话保存路径的读写权限:S
猜你喜欢
  • 2012-06-17
  • 2013-09-08
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
相关资源
最近更新 更多