我正在构建一个多页表单。
我正在使用
$_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页空白。
有什么想法吗?非常感谢
答案 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']
}