javascript - 使用 cookie 更新独特的 View

标签 javascript php cookies

我有一个论坛线程文件 thread.php 获取主题 ID 信息。

例子:

thread.php?id=781

我正在尝试创建一个独特的 View 设置,但我不知道这是否真的可行:

thread.php:

topicId = <?php echo $_GET['id']; ?>;

if ($.cookie("unique"+topicId)!=="1") {
    $.cookie("unique"+topicId,1,{expires: 1000, path: '/'}); // create cookie if it doesn't exist
    $.post('unique.php',{id:topicId}); // update thread unique views
}

unique.php

// connection stuff

$id = mysqli_real_escape_string($conn,$_POST['id']);
mysqli_query($conn,"UPDATE topics SET unique_views=unique_views+1 WHERE id='$id'");

这将为每个不同的线程创建一个新的 cookie。因此,如果用户查看 100 个线程,他们将存储 100 个 cookie。我担心为每个线程创建一个新的 cookie 是否太多了。这样可以吗?还有更好的方法吗?

最佳答案

即使有可能,那也是一种资源浪费。例如,您应该使用 JSON 将数据序列化到单个 cookie 中。

在 Javascript 中,您可以使用 JSON.stringify 将主题数组编码为 JSON 字符串:

$.cookie("cookie_name", JSON.stringify(topicsId_array));

然后你可以用JSON.parse获取数据:

var topicsId_array = JSON.parse($.cookie("cookie_name"));

请记住,您可以使用 push JS 方法将元素添加到数组 ( http://www.w3schools.com/jsref/jsref_push.asp ),这样您就可以从 cookie 中获取数据,使用 push 添加新的 Id,然后使用字符串化。

最后,您应该关心重复项。如果你在使用 push 时不需要它们,你可以使用 https://api.jquery.com/jQuery.unique/清除数组或使用自己的 JS 函数,例如:

function unique(array_source)
{
    var array_destination = [];
    var found = false;
    var x, y;

    for (x=0; x<array_source.length; x++)
    {
        found = false;
        for (y=0; y<array_destination.length; y++)
        {
            if (array_source[x] === array_destination[y])
            {
              found = true;
              break;
            }
        }
        if (!found)
        {
            array_destination.push(array_source[x]);
        }
    }
   return array_destination;
}

var topicsId_array = ['aaa', 'bbb', 'ccc', 'aaa'];
topicsId_array = unique(topicsId_array);

最后,这样的事情应该可行:

var topicsId_array = JSON.parse($.cookie("cookie_name"))
topicsId_array.push("your_new_id");
topicsId_array = $.unique(topicsId_array);
$.cookie("cookie_name", JSON.stringify(topicsId_array));;

关于javascript - 使用 cookie 更新独特的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30554139/

相关文章:

php - 无法逆转 Laravel 中 Eloquent 关系

ASP.NET "Remember Me"cookie

javascript - Knockoutjs - 具有自引用多对多复选框列表的嵌套组数组

javascript - Let's encrypt auto renewal (Nginx) 错误

javascript - 是否可以检测 JavaScript 中何时创建 ES6 类的第一个实例?

php - 使用 Telegram Bot PHP sendMediaGroup 方法

javascript - 使用 Inert html 创建文件的更好方法

PHP如何删除字符串中的单词?

javascript - 将图像数据存储在 cookie 中

javascript - webapp2 cookie 检索不完整