2016-07-06 29 views
-3

12時間に2回のボタンの使用を制限できるコードが必要です。私はjqueryメソッドを使用していますが、悲しいかな、ユーザーがページを更新するときに、再度クリックすることができます。ボタンを制限する必要があります

データベースにはクリック数の項目がありませんが、それがの場合はが必要です。事前に感謝:D

+1

あなたはこの.. –

+0

ああのためにクッキーを使用することができ、私は笑 –

+1

@CameronBonessちょうどクッキーやHTML5のストレージに日付/タイムスタンプを保存する方法は考えています。次にクリック時の現在の時間と比較します。それはクライアント側のストレージなので、ユーザーがそのデータを変更する能力の範囲内にあるので注意してください。それ以外の場合は、サーバーに情報を格納する必要があります。 –

答えて

0

この目的のためにクッキーを使用することができます。そして、ここであなたが作成することができますどのように完全な詳細情報があり、jqueryの

create, read, and erase cookies with jQuery

を使用して読み取ると、消去クッキーは、これはあなたのために働くことを願っています。

0

セキュリティ機能の場合、これを管理するための安全な方法はありません。あなたはサーバー側でそれを処理する必要があります。そうでない場合は、クッキーが制限されているので、クッキーの代わりにlocalStorageを使用してください。クッキーが多すぎるとリクエストを拒否するJava-Serverに問題があります。

if(!localStorage.hasOwnProperty("buttonClicks")) { 
    localStorage.buttonClicks = 0; 
} else if(typeof localStorage.buttonClicks !== "number"){ 
    localStorage.buttonClicks = 0; 
} 
// save as variable to ensure the user will not modify it on the fly 
var buttonClicks = localStorage.buttonClicks; 
button.on("click",function(e){ 
    // maybe reset timeout on click to delete the buttonClicks 
    if(buttonClicks >2) { 
     return; 
    } 
    localStorage.buttonClicks++; 
    buttonClicks++; 
    // do something 
}); 

このメソッドにはセキュリティはまだ含まれていません。ユーザーは、開発者ツールの値を1に設定した後、ページをリロードすることができます。だから、彼はツールの使い方を知ってから12秒で4回クリックすることができます。

+0

PHPはより良い選択肢ですか? –

+0

だけでPHPを処理することはできません。ユーザーはページをリロードすることができ、カウンタはデフォルト値になります。 'session_start(); if(!isset($ _ SESSION ['clicks'])){$ _ SESSION ['clicks'] = 0;}'それをデータベースに保存するか、サーバーセッションに保存する必要があります。セッション変数をチェックするバックエンドのメソッドを持つajax-function – Mephiztopheles

0

これは、ユーザーを制限したい範囲に依存します。以下の私は考えることができる方法のリストです:ユーザーのブラウザを再開くか、別のブラウザを開き、彼はただクリックすることができたときに

  1. あなたは、クライアントを持っているか、サイドのセッション変数を切断、悲しいかなすることができますもう一度。
  2. @RamSinghのようにクッキーを作成することもできますが、ユーザーがキャッシュをクリアすると、もう一度クリックすることができます。
  3. 上記の2つを避けたい場合。データベースにはが必要です。情報を格納するにはが必要ですが、ユーザーが別のネットワークを使用している場合は、彼を追跡する方法がありません。
関連する問題