0
私は、ajaxを介してphp関数を呼び出すボタンをユーザがクリックする非常に単純なゲームを持っています。 php関数は呼び出しを記録し、ボタンをクリックする機能を1減らします。迅速なajax呼び出しからの保護
ユーザーがボタンを叩くか強制的にphp関数を呼び出すと、ユーザーは1分間で何百回もphp関数を実行できます。
これを停止する方法はありますか?
単純なサーバ側コールごと1500msを制限するためのコード、またはしないことが判明として:)
$user = Utils::getUser();
$now = round(microtime(true) * 1000);
// run spin
if($user){
$dif = $now - $user->last_spin;
if($user->spins > 0 && $dif > 1500){
$user->last_spin = $now;
$user->decrement('spins');
$user->increment('spin_count');
$user->save();
//do stuff
}
}
ボタンを1回クリックすると無効になりますか? – GrumpyCrouton
ユーザーのリクエストを停止することはできません。しかし、サーバーサイドのコードでは、何か起きていることを追跡し、ビジネスロジックの要件を満たしていない場合はエラーを返すことができます。または、アーキテクチャレベルでは、アプリケーションに到達する前にWebサーバーやルータでもリクエストを抑制することができます。それは別のスタックエクスチェンジサイトに適していますが。 – David
ボタンが無効になります。しかし、ボタンが無効になる前に、ユーザーは依然としてajaxコールを迷惑メールにすることができます。 jsでボタンを無効にすることは、ユーザーが簡単に元に戻すことができます。 – xtremetom