我想使用HTML链接在PHP中更改会话变量。为此,我设置了一个HTML“a”标签,可以调用如下所示的javascript函数:
function changeValue(name){
data = "key='person'&value=" + _name;
$.ajax({
url: www_root + "/funcs.php?func=set_session_var",
type: "post",
data: data,
success: function(data){
console.log(data);
}
});
}
然后,我有了funcs.php脚本,它有这样的set_session_var函数:
function set_session_var(){
session_start();
$key= trim($_GET["key"]);
$value= trim($_GET["value"]);
$_SESSION[$key] = $value;
session_write_close();
echo $key;
}
然后,原来的php / html页面会重新加载,但它会首先加载一个外部页面(称之为item.php)来解决所有的php会话内容。看起来像这样:
session_start()
$session_id = session_id();
$sc = $_SESSION['person'];
但是,尽管AJAX成功函数返回了正确的值,但$ sc变量始终显示为空。我已经检查了两个脚本的session_id,它们是相同的。我还尝试在item.php中设置会话变量,并且它仍然存在。只是当我使用funcs.php脚本设置会话变量时,它不会保存。
赞赏任何和所有想法!
答案 0 :(得分:3)
您正在发送报价:
data = "key='person'&value=" + _name;
^------^
这意味着您有效地做了:
$_SESSION["'person'"] = $value;
^------^-
请注意,这些单引号已成为会话密钥名称的一部分。
尝试
data = "key=person&value=" + _name;
^----^--- no quotes
代替。