php中的cookie值不会改变

时间:2016-09-08 08:39:52

标签: php cookies

我在改变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;
}

出了什么问题&&我该怎么办???

2 个答案:

答案 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在发送到浏览器的标题中设置,因此在内容开始刷新后无法设置。