2011-01-06 10 views
0

私はページにフォームを持っています。今は同じページ(投稿を使用)にフォームを送信しています。この部分はうまくいきます。しかし、私がページをリフレッシュすると、フォームは再び提出されます。これを修正する方法の手がかりがあります。複数のフォームを送信するページReferesh PHP

+0

あなたはリダイレクトを使用するか、重複 – shankhan

+0

重複の可能性を避けるために、フォームnonceを使用することができます。http://stackoverflow.com/questions/3923904/preventing-form-resubmission、http://stackoverflow.com/questions/880437 /防止ダブルフォーム送信、http://stackoverflow.com/questions/218907/how-to-handle-multiple-submissions-server-side ... etc ... – Yahel

答えて

3

ヘッダーを同じページまたは別のページにリダイレクトしますか?

+0

私はリダイレクトすることができますが、ページはヘッダーで区切られていますbody-footer.Soリダイレクトしようとすると警告が表示されます:headerは既にheader.phpで送られてきました。これを処理するには? –

+0

ヘッダーは、出力の前に来なければなりません(単一のスペースでもその警告が発生します)。ヘッダーをページの上部に置くことを強く推奨しますが、あらかじめ出力バッファリングをオンにすることもできます。それでもCPU負荷が高くなることに注意してください。 – simshaun

+0

は出力バッファリングを使用して解決しました。 –

0

セッションで作業できます。セッションにフォーム名が存在する場合、フォームは再び処理されません。

$_SESSION['form']['name_of_the_form'] = time(); 
2

POST要求を処理した後に同じページにリダイレクトします。

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    # process the request ... 

    # ... and redirect 
    header('Location: page.php'); 
} 
0

他の人が指摘したように、HTTPリダイレクトを使用すると、ユーザーのブラウザに送信されたヘッダーを変更できます。 PHPのheader()関数はこれを可能にします。何も出力する前にこの関数呼び出しを実行してください。そうでない場合は失敗します。それは以下のように見えるかもしれません。

<?php 
// some code to process the form data here 
header('Location: page.php'); // redirect user to page.php 
+0

私はリダイレクトをしようとしていますが、問題はページがヘッダーで区切られていることです - body-footer.Soリダイレクトしようとすると警告が表示されます:ヘッダーはヘッダ(header.php)私はこのページを持っています。これをどう扱うか? –

関連する問題