确保用户不要垃圾邮件“喜欢”按钮

时间:2012-11-01 13:25:05

标签: php

我的朋友和我正在创建一个请愿板,我正在添加一个喜欢/不喜欢的功能。我打算这样做,只有用户可以喜欢/不喜欢它。问题是,我不知道如何确保用户不多次垃圾邮件按钮以及如何注册哪个用户喜欢/不喜欢哪个主题。以下是我目前的代码。

编辑:谢谢我现在正在创建喜欢/不喜欢的表。但现在我必须将用户与数据库进行比较,看看他们之前是否喜欢评论。我知道我必须使用WHERE(检查喜欢和不喜欢的表)但我不知道如何将它与IF结合起来。

<?php
include connect.php

if (isset($_POST['like']) || isset($_POST['dislike'])) 
{
    if($_SESSION['signed_in']){
        if (isset($_POST['like'])) {
            $sql="UPDATE 
                    topics
                SET
                    likes=likes+1,
                WHERE
                    id=topic_id";

            echo "You liked it";
        }

        elseif (isset($_POST['dislike'])) {
            $sql="UPDATE 
                    topics
                SET
                    dislikes=dislikes+1,
                WHERE
                    id=topic_id";

            echo "You disliked it";
        }
    }
    else{
        echo 'Please log in.'
}

?>

2 个答案:

答案 0 :(得分:5)

您应该有一个包含以下列的“赞”表。

“article_id”,“user_id”,主键应包含两列

每次用户喜欢文章时,INSERT INTO都会喜欢VALUES($ article_id,$ user_id); 如果有人喜欢两次,它会失败,这要归功于主键。

每次用户不喜欢,DELETE FROM喜欢WHERE article_id = $ article_id AND user_id = $ user_id。这将允许用户再次喜欢。

要获得文章的喜欢次数,请运行SELECT COUNT(*),因为nb_of_likes FROM喜欢WHERE article_id = $ article_id,而不是将数字存储在文章表中。

有道理吗?

答案 1 :(得分:0)

以下解决方案是可能的,可以一起使用:

  • 如果您使用注册/登录机制,那么您可以在内部设置一些计数机制,以便每个用户可以按照请求进行一次(如Bgi建议)。
  • 你可以存储一个cookie,防止他进一步喜欢,即使他创建了一个新用户。
  • 当然,人们可以删除Cookie或使用其他浏览器,因此您可以使用例如md5并比较哈希,如果该哈希已经在使用请愿书。
  • 当然,多人可以共享相同的IP,因此IP哈希可能并不总是一个好的解决方案。或者,您可以使用Facebook API,并要求人们拥有一定数量的朋友或其他东西,以验证他们的身份验证。

您永远无法完全摆脱垃圾邮件发送者,取决于您的请求的具体情况。因此,你越想阻止利用请愿书,就越不会匿名。