2010-12-28 11 views
0

私はここに何かを紛失した場合は謝罪しますが、今は指定された期間の後に投稿のためのPHPコードを探しています。それで、送信ボタンをクリックした後にx時間後に再び送信できるようになると、指示、ポインタ、サンプルURL、またはいくつかのコードを提供する人が助けになると感謝します。指定期間内に制限がありますか?

答えて

3

まあ、最後に誰かがPOSTをどこかに送ったものを保存する必要があります。

クッキー内 - クライアントがクッキーを操作/削除できるので、これは他のオプションほど安全ではありません。

サーバセッションでは、($ _SESSION) - これは、特定のクライアントをIPなどで追跡する必要がないため、最も簡単な方法です。

データベース内 - これは最も柔軟な方法で、クライアントを簡単に表示および管理できます。

誰かがPOSTを実行するたびに、最後に投稿をしたときにストレージをチェックインし、まもなく投稿があればそれを拒否します。

また、クライアント側でこれをjavascriptを使用して行うこともできます。しかし、それはクライアントがそれを無効/操作できるほど安全ではありません。

+0

ああ、おかげで、しかし、可能な用途の送信元IPことを私はそれは、友人にメールを送るために、データベースを使用していないのですか? – user485783

+0

それから私はセッションを使います。誰かがメールを送るとき '$ _SESSION ['last_post'] = time();のような' time() 'をセッションに入れてください。彼らが次回に送信するときは、 '$ _SESSION ['last_post']> strtotime( ' - 30分');をチェックし、そうであればエラーメッセージで拒否します。 – alexn

+0

ええと...私はもっと理解しましたが、私はまだ例のコードを探しています、もう一度感謝します。 – user485783

1

一つの技術はそうのような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> 
+0

この手法はバイパスすることができますが、大部分のユーザーには有効です。もちろん、ユーザーがプログラマーであることを期待している場合を除き、サーバーベースのメカニズムを使用する必要があります。 –

+0

それは素晴らしいですが、コードをバイパスすることはできませんので、カウントダウン時にはもっと美しく、送信ボタンを有効にするにはx時間が必要な警告メッセージで、javascriptの無効を予期する方法を見つける必要があります。ありがとうございました – user485783