【发布时间】:2015-08-01 07:21:11
【问题描述】:
我试图在 cookie 中保存一组值,并在每次加载页面时使用新值更新该 cookie,但我无法更新该数组。到目前为止,这是我所得到的:
我设置了一个包含四个值的数组,并在每次页面加载时在数组中选择一个随机值。
// Store values in array
$values = array(
0 => 'A',
1 => 'B',
2 => 'C',
3 => 'D'
);
// Get a random value for this page load
shuffle($values);
$random_value = $values[0];
然后我检查 cookie 是否已设置,如果尚未设置(例如,第一次加载页面时),我将 cookie 设置为存储值,使用 JSON 将值存储在数组中。
// Check if cookie has been set
if (!isset($_COOKIE["my_cookie"])) {
// Set cookie to current value
$init_value = array($random_value);
$init_value = json_encode($init_value, true);
setcookie('my_cookie', $init_value, time()+3600);
}
然后我有一个 else 语句,它将在设置 cookie 时触发(例如,每次后续页面加载),它获取 cookie 数组,将当前随机值添加到数组的末尾,并尝试存储更新数组作为 cookie 的新值。
else {
// Get cookie value
$prev_value = $_COOKIE["my_cookie"];
$prev_value = stripslashes($prev_value);
$prev_value = json_decode($prev_value, true);
// Add current value to array and set cookie again
array_push($prev_value, $random_value);
$new_value = json_encode($prev_value, true);
setcookie('my_cookie', $new_value, time()+3600);
}
在尝试用最后一段代码中的新值更新 cookie 之前,一切正常。该值已添加到数组中,但该数组未设置为 cookie。
谁能告诉我为什么 cookie 没有更新?我是否以正确的方式处理这件事?
谢谢。
【问题讨论】:
-
您实际上需要销毁旧 cookie 并制作一个“新”cookie。
-
使用
setcookie('my_cookie', $new_exp, time()+3600);。 $new_exp 是单引号。所以值没有被执行 -
@TamilSelvan 我删除了单引号,但问题仍然存在。
-
我运行你的代码,一切正常。
-
我刚刚通过从stackoverflow复制代码进行了测试,它可以工作!不知道那里发生了什么,我想也许我解决了简化代码以在此处发布的问题。谢谢!
标签: php cookies refresh setcookie