2

My friends and I are creating a petition board and i'm adding a like/dislike function to it. I intend to make it such that only users can like/dislike it. Problem is, I do not know how to ensure that the users do not spam the button multiple times and how to register which user has liked/disliked which topic. Below is my code so far.

EDIT: Thanks I am creating the likes/dislikes table right now. But now I have to compare the users with the database to see if they have previously liked a comment. I know I have to use WHERE (to check both likes and dislikes table) but i am not sure how to combine it with 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.'
}

?>
4

2 に答える 2

5

次の列を持つ「いいね」のテーブルが必要です。

"article_id"、 "user_id"、主キーには両方の列が含まれている必要があります

ユーザーが記事を高く評価するたびに、INSERT INTOはVALUES($ article_id、$ user_id);を高く評価します。主キーのおかげで、誰かが2回いいねをすると、失敗します。

ユーザーが嫌いになるたびに、DELETE FROM like WHERE article_id = $ article_id AND user_id =$user_id。これにより、ユーザーは必要に応じて再び好きになることができます。

記事のいいねの数を取得するには、記事テーブルに数を保存する代わりに、SELECT COUNT(*)をnb_of_likes FROM like WHERE article_id =$article_idとして実行します。

意味がありますか?

于 2012-11-01T13:29:24.257 に答える
0

次の解決策が可能であり、一緒に使用できます。

  • 登録/ログインメカニズムを使用する場合は、内部でカウントメカニズムを設定して、各ユーザーが請願ごとに1回好きになるようにすることができます(Bgiが提案したように)。
  • 彼が新しいユーザーを作成したとしても、Cookieを保存して、彼がさらに好きになるのを防ぐことができます。
  • もちろん、人々はCookieを削除したり、他のブラウザを使用したりできるので、たとえばmd5でIPをハッシュし、そのハッシュがすでに請願を使用している場合はハッシュを比較できます。
  • もちろん、複数の人が同じIPを共有できるため、IPハッシュが常に適切なソリューションであるとは限りません。または、Facebook APIを使用して、本物であることを確認するために、ある程度の友達などがいることを要求することもできます。

あなたの請願がどれほど具体的であるかに応じて、あなたはスパマーを完全に取り除くことは決してできません。したがって、悪用による請願の使用を防ぎたいほど、匿名性は低くなります。

于 2012-11-01T13:37:41.530 に答える