我在改变cookie值时遇到了很大的问题。我有一个buttom函数来更改(如果存在)/ create(如果!存在)cookie并为其设置值。
当我调用函数时,会话值发生了变化,但cookie数据没有发生任何变化。
function setToken($time = 0) {
global $value;
if (!isset($_COOKIE["name"])) {
setcookie("name", $value, time() + $time);
} else {
$_COOKIE["name"] = $value;
}
$_SESSION["name"] = $value;
}
出了什么问题&&我该怎么办???
答案 0 :(得分:0)
从手册:
在下次加载页面之前,Cookie才会显示 cookie应该是可见的。测试cookie是否成功 设置,检查cookie之前的下一个加载页面上的cookie 到期。过期时间通过expire参数设置。一个很好的方式 通过简单调用来调试cookie的存在 的print_r($ _ COOKIE);
<强>更新强>
你的代码适合我。但请确保为函数setToken()
提供正整数。如果不这样做,cookie将立即过期而不显示!
如果您想更改Cookie值,请更改您的代码:
function setToken($time = 0) {
global $value;
if (!isset($_COOKIE["name"])) {
setcookie("name", $value, time() + $time); // inital set
} else {
setcookie("name", $value); // change value
}
$_SESSION["name"] = $value;
}
答案 1 :(得分:0)
分配给$_COOKIE
全局实际上并未在浏览器中设置cookie。始终致电setcookie
。
此外,在设置cookie之前,请确保没有内容已发送到浏览器。 Cookie在发送到浏览器的标题中设置,因此在内容开始刷新后无法设置。