PHP会话继续到子域不工作

时间:2013-07-13 07:21:02

标签: php session cookies subdomain

我刚刚阅读此链接并尝试实施Allow php sessions to carry over to subdomains

在我的localhost中,我有以下index.php文件

<?php
ini_set('session.cookie_domain', '.localhost' );
if ("" === $_POST['login_name']){

}elseif ("" === $_POST['login_password']){

}else{
    $_SESSION['login'] = true;
$_SESSION['user'] = $_POST['login_name'];
$_SESSION['group'] = 'support';
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Idea Networks And Communications Limited</title>
</head>
<body>
<form action="" method="post" style="display:block;margin:0 auto">
<fieldset>
<legend>Please, Log In</legend>
<label >User Name</label>
<input name="login_name" type="text" maxlength="32" />
<br />
<label>Password</label>
<input name="login_password" type="password" maxlength="32" />
<br />
<input type="submit" value="Log In"/>
</fieldset>
</form>
</body>
</html>
<?php 
echo var_dump($_SESSION['login']);
echo var_dump($_SESSION['user']);
echo var_dump($_SESSION['group']);
?>

在subdomain.localhost中,我有以下index.php文件

session_start();

echo var_dump($_SESSION['login']);
echo var_dump($_SESSION['user']);
echo var_dump($_SESSION['group']);

但他们打印空值。

谢谢

1 个答案:

答案 0 :(得分:0)

我建议您使用以下代码而不是修改ini文件:

这应该在调用session_start之前设置。 如您所见,我没有使用“.localhost”而是使用您的主机名。 如果您打算更好地测试此代码以使用Firefox进行测试,因为带有域的cookie 如果服务器不在互联网上,则无法在chrome中使用 例如,我的计算机的主机名是“example-pc”

session_set_cookie_params (0, "/", ".example-pc", false, true);

然后调用会话开始

session_start();