1

私は現在、匿名ユーザーがデータベースにデータ(またはコメント)を入力し、サイトの他の匿名ユーザーがサイトに表示されたコメントに賛成または反対票を投じることができるWebサイトを作成しています。

ユーザーがコメントを作成し、別のユーザーがコメントに投票できるようにする機能をすでに作成しました。私が抱えている問題は、サイトへの各訪問者を、各コメントに1回だけ投票するように制限する方法を考えていることです。

私のアイデアは、ユーザーが投票したときにセッションIDを作成し、次にユーザーが再度投票してセッションIDがすでに存在するかどうかを比較することでした。これは機能しますが、セッションが破棄されるまでのみです。誰かがこれをどのように達成できるかについて他のアイデアを持っていますか?

利用可能な$_SERVERオプションのいくつかを使用できる可能性があると想定しています

前もって感謝します

4

3 に答える 3

1

IPまたはCookieのいずれかで投票を制限するだけで、公開投票を行う必要がある3つのWebサイトも作成しました。以前はIPで投票しましたが、その後Cookieに戻しました。また、IPを保存し、Cookieを設定してユーザーは投票のために何度も Cookie を削除していますが、私はそのような問題は一度もありませんでした。

于 2012-04-21T18:15:34.753 に答える
0

匿名ユーザー システムに 1 票ポリシーを強制することは不可能です。上記のコメントで述べたように:

「匿名」を制御しようとすることはほとんど不可能です。IP は共有、セッションは一時的、Cookie は削除可能

クライアントを 100% 識別することはできません。ユーザーが望む場合、ユーザーは、あなたが使用しようとする手段をバイパスして、複数回投票することができます。

唯一の信頼できるオプションは、登録を強制し、登録ユーザーのみに投票を許可することです。


それでも主張する場合は、ユーザーが強制システムを迂回するのを困難にすることができます。ユーザーの IP アドレスと永続的な Cookie の組み合わせを使用し、両方に対して相互検証して、ユーザーが 2 回投票しないようにします。ただし、繰り返しになりますが、ユーザーは簡単に Cookie を削除でき、ほとんどの場合、自分の IP アドレスを変更できることに注意してください。

于 2012-04-21T18:34:39.857 に答える
-1

特定の記事にコメントを挿入するときは、メンバー(コメントしている人)のIDや名前、または一意のものを保存します。コメントを挿入する前に確認コードを入力してください...。

Select * from articles where member_commented_id = [current_member_id_from_querystring) and article_id = member_commented_on_article_id

//a check point
if result is > 0 .. its mean member already has commented on this article

//otherwise
add comments on article and insert member id as well for checking

// if you are using seperate table for comments then you have to make additional field in table like

comment_id, comment, com_date, member_id_who_commented, article_id_on_which_commented

IPはISPによって変更され(動的IPに設定されている場合)、訪問者がCookieをクリアできるため、IPまたはCookieのチェックポイントの作成は信頼できません。

これがお役に立てば幸いです

于 2012-04-21T18:21:46.933 に答える