使用重定向跨子域的Cookie

时间:2012-03-18 16:27:11

标签: php session subdomain

在我的主页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数据),请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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