2012-03-18 78 views
0

在我的主页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

是否已经设置的路径既'/'? – alex 2012-03-18 16:32:08

+0

是的,的确如此。 – Jordy 2012-03-18 16:39:49

+0

你用哪个浏览器测试这个? – hakre 2012-03-18 16:44:55

回答

0

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

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

会话名称不:-( – Jordy 2012-03-18 16:39:02

+0

会话名称的工作不应该有所作为,所以我不知道为什么有人建议作为一个答案。链接的问题并没有告诉从我读那里。 – hakre 2012-03-18 16:45:35

+0

问题解决了:主机禁止写的白痴和读权限的会话保存路径:S – Jordy 2012-03-18 17:30:18