【问题标题】:php sessions to carry over to subdomains dont work传递到子域的 php 会话不起作用
【发布时间】:2014-10-27 09:38:39
【问题描述】:

我刚刚阅读了这个链接并尝试实现它Allow php sessions to carry over to subdomains

在我的本地主机中,我有以下 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']);

但他们打印空值。

谢谢

【问题讨论】:

    标签: php session cookies subdomain


    【解决方案1】:

    我建议你应该使用下面的代码而不是修改ini文件:

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

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

    然后调用会话开始

    session_start();
    

    【讨论】:

    • 在子域中访问您的应用程序时,您应该输入 (http:)//yoursubdomain.hostname
    猜你喜欢
    • 1970-01-01
    • 2011-03-02
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    相关资源
    最近更新 更多