2016-04-16 9 views
0

私はDjangoでいくつかの投票を含むWebアプリケーションを開発しています。私はいくつかのリンクの後に質問を表示し、ユーザーが好きなリンクをクリックします。例えば:Poll app、同じ人からの複数の投票を避ける

<p>Which one do you prefer?</p> 
<a href="http://domain.com/polls/15/vote/1" >Option 1</a> 
<a href="http://domain.com/polls/15/vote/2" >Option 2</a> 
<a href="http://domain.com/polls/15/vote/3" >Option 3</a> 
<a href="http://domain.com/polls/15/vote/4" >Option 4</a> 

各リンクは、オプションは、例えば1ために、選択された投票によってポーリング番号15及び増加を表す二つの数15をとります。

問題はおそらく、いくつかのユーザーがクレイジーのようなウェブページをリフレッシュして、そのオプションを選択してブラウザにリンクhttp://domain.com/polls/15/vote/1を入力して、それを何度も投票するということになります。

この問題を回避する方法はありますか?私はx時間のために彼らが複数回投票することを避けるために、x時間のためのデータベースに有権者のIPを格納する必要がありますか?これは多くのユーザーにとって問題ではないでしょうか?

ありがとうございます!

答えて

1

は、あなたがそれをしたいどのくらいに依存します:

  • を投票する人のためのクッキーを追加し、ブラウザ
  • から直接アクセスする一切のURLが存在しないので、POSTメソッドを使用して、AJAXを通じて票を提出してください
  • キャプチャを追加
  • 店舗のIP(here)は効率的に保管するためのいくつかの提案ですが、パフォーマンスが重要な場合はRedisのようなものも利用できますが、全国投票システムを構築している場合を除き、ユーザーを検出した時はいつでもARテーブル)
  • はすでに投票しています、それができる。また、投票登録(電子メールの確認、Facebookのアカウントでの登録、SMSの確認と登録などの登録)

を要求します彼らのさらなる票を無視して黙って彼らが受け入れられたと偽ってスマートな動きをして、このようにして彼らはまるで詐欺に挑戦しようとしない。

+0

情報をいただきありがとうございます。私はPOSTメソッドを使用し、IPを保存します! – lpares12

関連する問題