PHP多页表单会话数据在2次导航后丢失

时间:2012-07-04 22:01:47

标签: php html forms multipage

我正在构建一个多页表单。

我正在使用

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

将表单中的变量存储到结果发布到的页面上的会话中。

动态生成表单,以便使用会话变量填充字段

$X=$_SESSION['X']

(value="$X")

这样,当用户点击(带有页面URL的按钮,而不是历史记录-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页空白。

有什么想法吗?非常感谢

2 个答案:

答案 0 :(得分:3)

可能你覆盖了来自$_SESSION的{​​{1}}值的NULL var,因为如果你使用链接从Page3.php跳转到Page2.php $_POST 1}}内容不存在。

因此,您可以在将$_POST值分配给$_POST之前验证$_SESSION值是否存在。类似这样的代码:

第2.pp页

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

第3.pp页

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

答案 1 :(得分:1)

也许尝试检查是否先设置了$ _POST成员。

而不是:

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

尝试

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