1

構築中の複数ページのフォーム サイトがあります。

私は使っている

$_SESSION['X']=$_POST['X'] 

フォームの変数を、結果が投稿されているページのセッションに保存します。

フィールドにセッション変数が入力されるように、フォームが動的に生成されます。

$X=$_SESSION['X']

(value="$X")

このようにして、ユーザーがクリックして戻ると (履歴 -1 ではなく、ページ URL を持つボタン)、ページは以前に入力した値で再形成されます。

私の問題は、これが 1 ページでは問題なく機能する (つまり、1 ページ戻って値を確認できる) ことですが、2 ページではすべての値が空白です。

値が SESSION に格納されると、ブラウザ セッションの間、値は保持されるべきではありませんか? それらは上書きされていません。私はセッションを誤解していますか?どんな助けでも感謝します。

コード例:

ページ1:

session_start();

//populates fields if session value set for this variable 
$sv_01=$_SESSION['sv_01'];

<<<EOT
<form action="page 2 URL" method="post">
<label> q1 <input value=$sv_01 title="title" type="text" name="sv_01">

<input type="submit" value="Continue" />
</form>
EOT;

ページ2:

session_start();
//stores POST data from page 1 in the session
$_SESSION['sv_01']=$_POST['sv_01']

//populates fields if session value set for this variable 
$sv_02=$_SESSION['sv_02'];

<<<EOT
<form action="page 3 URL" method="post">
<label> q2 <input value=$sv_02 title="title" type="text" name="sv_02">

<input onclick="page 1 URL';" type="button" value="Back" /> <input type="submit" value="Continue" />    
</form>
EOT;

ページ 3:

session_start();
//stores POST data from page 2 in the session
$_SESSION['sv_02']=$_POST['sv_02']

//populates fields if session value set for this variable 
$sv_03=$_SESSION['sv_03'];

<<<EOT
<form action="page 4 URL" method="post">
<label> q3 <input value=$sv_03 title="title" type="text" name="sv_03">

<input onclick="page 2 URL';" type="button" value="Back" /> <input type="submit" value="Continue" />    
</form>
EOT;

3 ページから 2 ページへの移動は問題ありません。また、2 ページから 1 ページへの移動も問題ありませんが、3 ページから 1 ページへの移動では、1 ページが空白になります。

何か案は?とても有難い

4

2 に答える 2

3

リンクを使用して Page3.php から Page2.php にジャンプしている場合、コンテンツが存在しないため、おそらく$_SESSIONvar を からのNULL値で上書きしています。$_POST$_POST

したがって、$_POST値を に割り当てる前に、値が存在するかどうかを確認して、この検証を解決できます$_SESSION。このコードのようなもの:

ページ 2.php

if( isset($_POST['sv_01'])
    $_SESSION['sv_01']=$_POST['sv_01'];

ページ 3.php

if( isset($_POST['sv_02']) )
    $_SESSION['sv_02']=$_POST['sv_02'];
于 2012-07-05T00:20:01.303 に答える
1

$_POST メンバーが最初に設定されていることを確認してみてください。

それ以外の:

$_SESSION['sv_01']=$_POST['sv_01']

試す

if (isset($_POST['sv_01'])) {
  $_SESSION['sv_01']=$_POST['sv_01']
}
于 2012-07-04T23:14:19.720 に答える