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

wat*_*sit 2 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.'
}

?>
Run Code Online (Sandbox Code Playgroud)

Bgi*_*Bgi 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,而不是将数字存储在文章表中.

说得通 ?

  • 我不会删除数据库中的任何内容.改为使用三列:`article_id`,`user_id`和`like`.如果他们喜欢某些东西,请将`like`列更新为`1`.如果他们不喜欢它,请将其更改为"0". (2认同)