0

各ユーザーが複数の写真に投票できるようにする Web アプリケーションを ASP.NET MVC で作成しようとしていますが、同じ写真に複数回投票することはできません。ユーザーは認証されません。データベースまたは Cookie に何を保存する必要がありますか?

4

4 に答える 4

6

PictureIdUserId、を含むデータベース テーブルに投票を保存し、複合一意制約を列にScore追加します。これにより、ユーザーと画像ごとに 1 つの投票のみが確実に行われます。PictureIdUserId

于 2009-07-07T08:25:00.913 に答える
3

匿名ユーザーには 2 つのオプションがありますが、どちらもあまり良いものではありません。

1) Cookie に保存されたユーザー ID でユーザーを追跡します。Cookie が存続する限り。ユーザーは 2 回投票できません。ただし、Cookie を削除または変更することはできます。Cookie がオフになっている可能性があります。同時に 2 つの異なるブラウザーを開くことができます。「チート」用のスクリプト (curl http://site/vote?score=5&pic_id=1 ) は、とにかく Cookie を保存しません。基本的に、必要以上に投票することになります。

1.5 *

2) IP アドレスでユーザーを追跡します。これは本質的に反対です。ユーザーは、Cookie の削除、ブラウザの切り替えなどに関係なく、2 回投票することはできません。ただし、同じ世帯の複数人 (DSL ルーターを使用) は、1 回の組み合わせでしか投票できません。多くの企業も同様に、多くのユーザーを 1 つの IP アドレスの背後に隠します。一部の ISP も同様だと思います (AOL?)。合法的に記録されるべきよりもはるかに少ない「投票」で終わることになります。

問題は、賛成票と反対票のどちらが欲しいかということです。不正行為の可能性が高いと思われる場合は、#2 を選択します。しかし、不正行為の可能性がある場合、それはインセンティブがあることを意味します。また、自分の投票が集計されていないことに気付いた場合 (気付いていない可能性もあります)、不満を抱くでしょう。

その後、各投票を行として保存するか、投票を 1 つの行に結合するか (更新画像セット num_votes = num_votes + 1、total_score = total_score + [提出されたスコア]) はあなた次第です。

  • 1.5 3 番目のオプションは、投票と電子メール アドレスを記録し、確認リンクを含む電子メールを送信し、それをクリックして投票を記録するように依頼することです。偽の電子メール アドレスを使用してカンニングを行うことはできますが、Cookie を削除するほどではありません。
于 2009-07-07T09:34:58.963 に答える
1

Daniel Brückner が示唆するように、一意の認証されたユーザーのデータベース レコードが前進する必要があります。Cookie は信頼性が低く、たとえば、Cookie を削除したり、ユーザーが別のブラウザーを使用したりする可能性があります。

于 2009-07-07T08:41:43.737 に答える
0

ユーザーが認証されている場合は、画像投票でユーザーIDを保存できます。

ユーザーが匿名の場合、システムは画像投票でIPアドレスを保存する傾向があります。完璧ではなく、100%証明されているわけではありませんが、ほとんどの状況で機能します。

于 2009-07-07T08:50:31.347 に答える