2

現在、を使用して複数ページのフォームを作成し$_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

これを正しく機能させる方法がわかりません...ヒントはありますか?

4

2 に答える 2

1

最善の解決策ではありませんが、仕事はします。戻るボタンを使用しないでください。独自の前進、後退、「ステップ」ボタンを提供してください。次に、セッションなどに保存されたデータをフォームに入力します。

于 2012-05-11T08:14:36.087 に答える
0

djot は正しいです。<< 戻る >> と << 進む >> ボタンが必要です。機能でできることは、戻るボタンがクリックされた場合に、ページ/フォームの値を非表示の入力フィールドとして渡し、非表示の値

于 2012-05-11T08:25:56.223 に答える