0

The problem i'm having is i keep on having to delete the cache or the form doesn't submit anything new. For example i typed in new data in the form and submitted and it wasn't inserted into mysql. I have to delete the cache first.

On submit.php is a form. done.php recieves $_POST variables from submit.php . At the top of done.php i have session_cache_limiter('private_no_expire');. I have this so when the user presses the back button and returns to done.php, they won't get the page expired message.

I only added session_cache_limiter('private_no_expire'); to get rid of the page expired message. Is there alternative so when i user presses the back button they don't get the page expired message?... alternatively how do i solve this?

4

1 に答える 1

1

1つの代替方法は、送信が失敗または成功した後、フォームプロセッサからsubmit.phpに301リダイレクトを送信することです。これにより、戻るボタンを使用したときにプロンプ​​トが表示されなくなります。送信プロセスをスキップして、その前にユーザーが表示していたページ(通常はsubmit.php)に戻ります。

ただし、この状況を処理するには、submit.phpのロジックを変更する必要があります。フォームフィールドにユーザーの以前のエントリを再入力したり、フォームが送信されなかった理由に関するエラーメッセージを表示したりすることはできません。

これを処理する1つの方法は、すべてのフォーム送信とエラーメッセージをセッションに保存し、submit.phpを再表示するときに、セッションにフォームデータがあるかどうかを確認することです。その場合は、フォームフィールドにセッションからの以前のエントリを再入力し、セッションからのエラーメッセージも表示します。

done.php

// validate form inputs here...

if (!$formIsValid) {
    // save $_POST values to $_SESSION
    // save any error message to $_SESSION
    header('Location: /submit.php');  // redirect back to form
    exit;
} else {
    header('Location: /success.php'); // redirect to success page
    exit;
}
于 2012-12-03T20:23:11.127 に答える