私は、jQueryの非同期性を使用してphpスクリプトを呼び出すWebサイトをプログラミングしています。二重のスクリプト呼び出しを避けるために、私は2つのことをしたいと思います。
- スクリプト呼び出しをトリガーするボタンを無効にします。これは正常に実行されました
- 呼び出されるphpスクリプトにタイマーを設定します。このタイマーは、同じユーザーによって1秒以内に呼び出されたかどうかを確認し、呼び出された場合は終了します。
最初に、これは比較的簡単だと思い、次のコードを思いつきました。
if(!isset($_SESSION['time'])) $_SESSION['time']=time();
else if(time()-$_SESSION['time']<=1){
//If less than one second ago, timer reset
$_SESSION['time']=time();
exit;
}
最初は問題なく動作しますが、その後、再度チェックする必要がある場合は、もちろん、非常に古い時間がセッションに保存されており、そこに残っているため、ユーザーは何度でもスクリプトを呼び出すことができます。
これを解決する方法はありますか?ありがとうございました!
チャールズ
編集
私の質問はおそらくこれと重複している可能性があります-2番目の回答に何か価値があると思いますか?
ソリューションが見つかりました
これが解決策です:
if(!isset($_SESSION['time']) || ($_SESSION['time'] + 1 < time())){
$_SESSION['time'] = time();
}else if(time()-$_SESSION['time']<=1){
//Timer reset
$_SESSION['time']=time();
exit;
}