私のページでは、ユーザーがコードを送信した後、スクリプトがデータベースに新しいレコードを作成します。コードを送信した後、ユーザーが更新をクリックすると、データベースに重複したレコードが作成されます。更新を 10 回押すと、同じデータで 10 件のレコードが作成されます...
ページを 2 回目に更新しないようにする方法はありますか?? または、ページの更新回数を制限するには? この状況を回避するには、どのような解決策を適用できますか?
前もって感謝します。
私のページでは、ユーザーがコードを送信した後、スクリプトがデータベースに新しいレコードを作成します。コードを送信した後、ユーザーが更新をクリックすると、データベースに重複したレコードが作成されます。更新を 10 回押すと、同じデータで 10 件のレコードが作成されます...
ページを 2 回目に更新しないようにする方法はありますか?? または、ページの更新回数を制限するには? この状況を回避するには、どのような解決策を適用できますか?
前もって感謝します。
フォームを生成する PHP スクリプトは、それを処理するものと同じようです。フォームを処理するために別の PHP スクリプトを設定することを検討することをお勧めします。例えば:
<form action="action_handler.php" method="post">
次に、 の最後でaction_handler.php
、次のように元のページにリダイレクトします。
header('Location: original_page.php');
レコードがデータベースに保存されたら、使用header()
して同じページにリダイレクトします。
この質問への回答を確認してください。おそらく同じコードを使用できます。
単純なものはunset($_POST["data"])
、データベースに挿入した後か、試してみることですheader('location:.')
POST データを扱うときは、常に POST/REDIRECT/GET セットアップ ( Wikipedia ) を使用する必要があります。この方法では、ユーザーが宛先ページを更新しても、更新以外には何も起こりません。
リダイレクト メソッドの最善の方法は、ステータス コード 303 ( HTTP ステータス コード) を使用することです。これは、POST データが受信、処理され、ユーザーが「応答」のために新しいページに移動する必要があることをブラウザーに通知します。ユーザーが「戻る」ボタンを押すと、そのページが利用できなくなった、または有効ではないというメッセージが表示されます (これにより、そのルートを介した再投稿が無効になります)。
この例を使用して、別のページにリダイレクトできます (かなり一般的な例ですが、使用できるベースライン コードがあります)。
header("HTTP/1.1 303 See Other");
header("Location: http://www.yourdomain.com/desitnation.php");