1

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

我在用

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

有任何想法吗?非常感激

4

2 回答 2

3

可能您正在使用来自的值覆盖$_SESSIONvar ,因为如果您使用链接从 Page3.php 跳转到 Page2.php,则内容不存在。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 回答