2012-05-11 5 views
2

私は現在、$_SESSIONを使用して複数ページのフォームを作成していますが、これまでのところすべて正常に動作しています。しかし、6ページの最後にすべてのデータを取得することはできますが、ユーザーが間違っていた場合はフォームに戻ることはできないようです。複数のページのフォームに戻る

彼は5ページ目にいて、何かを変えるために3ページ目に戻る必要があることを理解していますが、そうすることはできません。 Firefoxは次のエラーメッセージを表示します。

文書が期限切れです この文書はもう使用できません。 要求されたドキュメントはFirefoxのキャッシュでは使用できません。セキュリティ上の予防策として、Firefoxは機密文書を自動的に再要求しません。再度試してください。

これは私のフォームは次のようになり、この1つはフォーム1.phpは何かということです:

<form action="Form-2.php" method="post"> 
     <fieldset> 
       <legend>Information</legend> 
       <p> 
        <label for="name">Name</label> 
        <input id="name" type="text" name="name" required/> 
       </p> 
       <p> 
        <label for="age">Age</label> 
        <input id="age" type="number" name="age" placeholder="Ex. 1988" required/> 
       </p> 
       <p> 
        <input id="sex-m" type="radio" name="sex" value="Male" required/> 
        <label for="sex-m">Male</label> 
        <input id="sex-f" type="radio" name="sex" value="Female" required/> 
        <label for="sex-f">Female</label> 
       </p> 
     </fieldset> 
     <input type="submit" value="Next page"/> 
</form> 

私は前のフォームからデータを取得するためにSESSIONを使用しています、この1つはフォーム2.phpからです:

session_start(); 

$_SESSION['name'] = $_POST['name']; 
$_SESSION['age'] = $_POST['age']; 
$_SESSION['sex'] = $_POST['sex']; 

6ページも同様です。

正常に動作し、すべての値を正しく取得しますが、フォームに入力するときに戻ることはできません。

私は間違っていますか?ユーザーが間違いを犯した場合に、ユーザーが元に戻ることができるようにするにはどうすればよいですか?

ありがとうございました。

EDIT:

私は私の問題の半分を解決し、次のコードになってしまいました。まだフォーム2.phpから:

session_start(); 

if (isset($_SESSION['location']) && isset($_SESSION['job'])) { 
     $location = $_SESSION['location']; 
     $job = $_SESSION['job']; 
} else { 
     $_SESSION['name'] = $_POST['name']; 
     $_SESSION['age'] = $_POST['age']; 
     $_SESSION['sex'] = $_POST['sex']; 

     $location = ''; 
     $job = ''; 
} 

その後、私は単純にフィールドの値を表示:テキスト場合

:それは非常にうまく機能<?php if(isset($job) && $job == "Yes"){echo "checked=\"checked\" ";} ?>

<?php echo $location; ?>

ラジオ場合値が設定されていれば、さまざまなフォームが事前に設定されています。

私の問題は、あなたが見ることができるように、である、私は戻って、変更値ならば、私はPOSTを無視していますようSESSIONに格納されている対応する値がある場合、それは考慮されません。

私はこの作業を正しく行う方法を理解できません...何かヒント?

+0

Fyiという英語の単語「情報」は存在しません。それは常に「情報」です。 – ThiefMaster

+0

本当に、私のフォームをすばやく翻訳しましたが、私はこれを逃しました! – morgi

答えて

1

最高の解決策ではありませんが、仕事をします:戻るボタンを使用せず、あなた自身の前方、後方、「ステップ」ボタンを提供してください。次に、フォームにデータを保存します。セッション。バックボタンが非表示の入力フィールドとしてページ/フォームの値を渡すと移入クリックされた場合

+0

私は既にそのようなボタンを使用しています: ''下のボタンはうまくいくかもしれませんが、どうすれば私のデータを乱すことなく実装できますか? – morgi

+0

さて、それほど簡単ではありません。すべてのポスト、セッション(+検証、+ db_data_format)データを処理する独自の方法を見つける必要があります。私はいくつかの種類のform2session、session2form、session2db +検証クラスを使用してすべてを処理します。 – djot

+0

私は、私に例を示すことができますか、または私が始めるのを助けるコードを表示できますか?このフォームは少し具体的ですが、SQLリクエストなどは必要ありません。データを収集して組み立てるだけで済みます。 – morgi

0

djotは、あなたが戻って< <を必要とし、右で>>前方< < >>ボタン、何を機能的に行うことができますすることです

関連する問題