私はここに何かを紛失した場合は謝罪しますが、今は指定された期間の後に投稿のためのPHPコードを探しています。それで、送信ボタンをクリックした後にx時間後に再び送信できるようになると、指示、ポインタ、サンプルURL、またはいくつかのコードを提供する人が助けになると感謝します。指定期間内に制限がありますか?
答えて
まあ、最後に誰かがPOST
をどこかに送ったものを保存する必要があります。
クッキー内 - クライアントがクッキーを操作/削除できるので、これは他のオプションほど安全ではありません。
サーバセッションでは、($ _SESSION) - これは、特定のクライアントをIPなどで追跡する必要がないため、最も簡単な方法です。
データベース内 - これは最も柔軟な方法で、クライアントを簡単に表示および管理できます。
誰かがPOSTを実行するたびに、最後に投稿をしたときにストレージをチェックインし、まもなく投稿があればそれを拒否します。
また、クライアント側でこれをjavascriptを使用して行うこともできます。しかし、それはクライアントがそれを無効/操作できるほど安全ではありません。
一つの技術はそうのようなJavaScriptを使用して送信ボタンを無効にすることです:
<form id="myform" name="myform" onsubmit="disableForATime();">
<!-- form elements -->
<input type="submit" value="Submit" id="submitButton" name="submitButton"/>
</form>
<script type="text/javascript">
function disableForATime(){
document.getElementById('submitButton').setAttribute('enabled', false);
setTimeout(enableSubmit, 5000); //modify 5000 to be the number of milliseconds you would like to disable the button for.
}
function enableSubmit(){
document.getElementById('submitButton').setAttribute('enabled', true);
}
</script>
この手法はバイパスすることができますが、大部分のユーザーには有効です。もちろん、ユーザーがプログラマーであることを期待している場合を除き、サーバーベースのメカニズムを使用する必要があります。 –
それは素晴らしいですが、コードをバイパスすることはできませんので、カウントダウン時にはもっと美しく、送信ボタンを有効にするにはx時間が必要な警告メッセージで、javascriptの無効を予期する方法を見つける必要があります。ありがとうございました – user485783
ああ、おかげで、しかし、可能な用途の送信元IPことを私はそれは、友人にメールを送るために、データベースを使用していないのですか? – user485783
それから私はセッションを使います。誰かがメールを送るとき '$ _SESSION ['last_post'] = time();のような' time() 'をセッションに入れてください。彼らが次回に送信するときは、 '$ _SESSION ['last_post']> strtotime( ' - 30分');をチェックし、そうであればエラーメッセージで拒否します。 – alexn
ええと...私はもっと理解しましたが、私はまだ例のコードを探しています、もう一度感謝します。 – user485783