我有一个多页表单网站,我正在构建。
我正在使用
$_SESSION['X']=$_POST['X']
将表单中的变量存储到结果发布到的页面上的会话中。
表单是动态生成的,以便使用会话变量填充字段
$X=$_SESSION['X']
和
(value="$X")
这样,当用户单击返回(带有页面 URL 的按钮,而不是历史记录 -1)时,页面将使用他们之前输入的值进行改革。
我的问题是这对一页工作正常(即他们可以返回一页并查看值),但 2 页所有值都是空白的。
一旦值存储在会话中,它们不应该在浏览器会话期间保留吗?它们没有被覆盖。我是不是误会了?任何帮助表示赞赏。
代码示例:
页 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 页为空白。
有什么想法吗?非常感谢
可能您正在使用来自 $_POST
的 NULL
值覆盖 $_SESSION
var,因为如果您使用链接从 Page3.php 跳到 Page2.php则$_POST
内容不存在。
因此,您可以在将其值分配给$_SESSION
之前验证$_POST
值是否存在。像这样的代码:
第 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'];
也许尝试检查是否首先设置了 $_POST 成员。
而不是:
$_SESSION['sv_01']=$_POST['sv_01']
尝试
if (isset($_POST['sv_01'])) {
$_SESSION['sv_01']=$_POST['sv_01']
}