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


PHP Multipage form session data being lost after 2 navigations

我有一个多页表单网站,我正在构建。

我正在使用

$_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 页为空白。

有什么想法吗?非常感谢

可能您正在使用来自 $_POSTNULL 值覆盖 $_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']
}