的index.php
session_start();
if(!isset($_GET['n'])) {
$_SESSION['foo'] = "bar";
header("Location: /index.php?n=D");
}
echo "FOO: ".$_SESSION['foo'];
此页面index.php
用于子域。子域是根域中的文件夹,即
- WWW
- SUB DOMAIN
- index.php
会话变量foo
在页面调用时设置,然后在重定向标题后检查 - 它已经消失。
我试过了:
ini_set('session.cookie_domain','.example.com');
session_set_cookie_params()
但似乎没有任何效果。看起来像一个非常简单的问题 - 有人可以帮我找到丢失的cookie /会话/变量吗?
修改
var_dump(session_get_cookie_params())
收益
array(5) { ["lifetime"]=> int(0) ["path"]=> string(11) "/" ["domain"]=>
string(23) ".example.com" ["secure"]=> bool(false) ["httponly"]=> bool(false) }
我的网址中有一个短划线-
(my-example.com)。这可能是问题吗?
还尝试在params之前设置session_name()
。仍然没有工作。
答案 0 :(得分:2)
经过五个小时的尝试,我终于联系了我的托管服务提供商,他们看了一下。
判决结果? session.save_path
中的php.ini
尚未设置。上面的脚本现在正常运行。
如果有人愿意详细说明其中的原因和方法,我会很乐意给他们解决方案,否则我将不得不接受我自己的解决方案。