Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取多个cookie jQuery,PHP_Php_Jquery - Fatal编程技术网

读取多个cookie jQuery,PHP

读取多个cookie jQuery,PHP,php,jquery,Php,Jquery,我正在尝试做一些类似的事情,比如为评论投票。 我不为用户使用lo-gin,所以我想使用cookie来识别用户 我有一个脚本,除了一个问题外,效果非常好。它总是读取最后一个cookie,而不是以前创建的所有cookie。因此,如果有人投票,我刷新页面,一切正常,用户不能再投票了。因此,一个用户只能对同一条评论投票一次。问题是,如果我向上投了不同的评论,那么对于已经向上投了票的用户,上一个评论将再次可用于向上投 我猜我需要读取数组中的cookie还是创建一个循环 $(".comment-up").o

我正在尝试做一些类似的事情,比如为评论投票。 我不为用户使用lo-gin,所以我想使用cookie来识别用户

我有一个脚本,除了一个问题外,效果非常好。它总是读取最后一个cookie,而不是以前创建的所有cookie。因此,如果有人投票,我刷新页面,一切正常,用户不能再投票了。因此,一个用户只能对同一条评论投票一次。问题是,如果我向上投了不同的评论,那么对于已经向上投了票的用户,上一个评论将再次可用于向上投

我猜我需要读取数组中的cookie还是创建一个循环

$(".comment-up").one("click", function(ev) {
    ev.preventDefault();



    var s = parseInt($(this).next('span').text());
    var m = s + 1;
    if (isNaN(m)) {
        $(this).next('span').text(1);
    } else {
        $(this).next('span').text(m);
    }


    like = $(this).attr('name');
    if (like == "") {
        like = 0;
    }
    up_id = $(this).attr('value');

    $.cookie("like", up_id, {path:'/', expires: 365 * 10 }); //set the cookie
    <? php
    $cookies = $_COOKIE["like"];
                       if ($cookies == null){$cookies = "";}
                       $already = "already";
                       echo 'if (up_id == "'.$cookies.'")
                       { 
                         $(this).next("span").text(s);
                         $(this).after("<span class='.$already.'>You already up-voted</span>");                  
                       }
                       else{
                       ';

        ?>
        $.post("/index_api.php", {
            up_id: up_id,
            like: like
        }, function(response) {
            //placeholder                                           
        });
    return false;
     }
});

我还在数据库里储存投票结果。cookie可以检测是否有人已经投票。

不确定我是否正确理解了您的问题,但您所做的问题是,您不断覆盖现有的cookie值,就像上次喜欢的帖子一样,因此,您的web应用程序基本上会忘记以前喜欢的帖子。
为了实现这一目标,您应该在like cookie中存储所有喜欢的帖子的JSON对象,或者为每个喜欢的帖子创建一个cookie,但这可能会稍微难以维护。

bad_boy是正确的。您不断地更改类似cookie的值,而不是向其添加新值。我建议您阅读$.cookie jQuery插件的文档,再看一看PHP的$\u cookie documentation@Grasper首先,您应该记住cookie在内部使用一堆头。每收到一个请求,就发送一个。而且饼干有过期的趋势。关于存储文章/评论/任何内容的投票,最常见的方法是创建一个类似于注释id、投票、ip的表,并通过查询进行处理。@bad_boy,等等。我将它存储在db中。我只是使用cookies来确定是否有人因为我没有用户登录而投票升级。@Andrew,如果用户没有登录,这与cookies有什么不同?@Tom,你是对的,我正在覆盖它,但即使我使它成为动态的,php部分也需要以不同的方式处理。