php - 每次加载页面时,使用新值更新存储在 cookie 中的数组

标签 php cookies refresh setcookie

我试图将一组值存储在 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,可能只是本地问题

关于php - 每次加载页面时,使用新值更新存储在 cookie 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31756036/

相关文章:

reactjs - React-native,清除 webview cookie?

PHP页面加载/刷新到准确位置

php - 如何停止 jQuery post 页面刷新

php - csv 未使用 laravel 上传到数据库

php - 安卓和php

php - 数组的 echo 值?

php - 处理上传的不同编码的文本文件的最佳方法是什么?

node.js - Node.js + Express 中的 request.cookies ['name' ] 和 request.cookies.name 有什么区别

java - 如何使用 Apache HttpClient 4.3 处理 Cookie

java - 尝试在表刷新后保留排序器位置