現在、を使用して複数ページのフォームを作成し$_SESSION
ていますが、これまでのところすべて正常に機能しています。それでも、6ページの最後にあるすべてのデータを取得できたとしても、ユーザーが間違えた場合、フォームに戻ることはできないようです.
彼が 5 ページにいて、何かを変更するには 3 ページに戻る必要があることに気付いたとしましょう。彼はそうすることができません。Firefox で次のエラー メッセージが表示されます。
ドキュメントの有効期限が切れています このドキュメントは利用できなくなりました。要求されたドキュメントは Firefox のキャッシュでは利用できません。セキュリティ上の予防措置として、Firefox は機密ドキュメントを自動的に再要求しません。Web サイトからドキュメントを再要求するには、[再試行] をクリックしてください。
これは私のフォームの外観です。これは Form-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
しています。これは Form-2.php からのものです。
session_start();
$_SESSION['name'] = $_POST['name'];
$_SESSION['age'] = $_POST['age'];
$_SESSION['sex'] = $_POST['sex'];
6ページについても同様です。
正常に動作し、すべての値を正しく取得しますが、フォームに入力するときに戻ることはできません。
私は何を間違っていますか?ユーザーが間違えた場合に元に戻せるようにするにはどうすればよいですか?
ご協力いただきありがとうございます。
編集 :
私は次のコードになり、問題の半分を解決しました。まだ Form-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 echo $location; ?>
ラジオの場合:<?php if(isset($job) && $job == "Yes"){echo "checked=\"checked\" ";} ?>
それは非常にうまく機能し、値が設定されている場合、さまざまなフォームが事前に入力されています。
私の問題は、ご覧のとおり、戻って値を変更POST
すると、 に対応する値が格納されているかどうかを無視しているため、考慮されないことですSESSION
。
これを正しく機能させる方法がわかりません...ヒントはありますか?