Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP多页表单会话数据在2次导航后丢失_Php_Html_Forms_Multipage - Fatal编程技术网

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

PHP多页表单会话数据在2次导航后丢失,php,html,forms,multipage,Php,Html,Forms,Multipage,我有一个我正在建立的多页表单站点 我正在使用 $_SESSION['X']=$_POST['X'] 将表单中的变量存储到结果发布到的页面上的会话中 表单是动态生成的,因此字段中填充了会话变量 $X=$_SESSION['X'] 及 这样,当用户单击“上一步”(带有页面URL的按钮,而不是历史记录-1)时,页面将使用他们以前输入的值进行重组 我的问题是,这在一页上可以正常工作(即,他们可以返回一页并查看值),但在两页上,所有值都是空白的 一旦值存储在会话中,它们不应该在浏览器会话期间保持不变

我有一个我正在建立的多页表单站点

我正在使用

$_SESSION['X']=$_POST['X'] 
将表单中的变量存储到结果发布到的页面上的会话中

表单是动态生成的,因此字段中填充了会话变量

$X=$_SESSION['X']

这样,当用户单击“上一步”(带有页面URL的按钮,而不是历史记录-1)时,页面将使用他们以前输入的值进行重组

我的问题是,这在一页上可以正常工作(即,他们可以返回一页并查看值),但在两页上,所有值都是空白的

一旦值存储在会话中,它们不应该在浏览器会话期间保持不变吗?它们没有被覆盖。我是不是误会了?谢谢你的帮助

代码示例:

第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;
session_start();
//如果为此变量设置了会话值,则填充字段
$sv_01=$_会话['sv_01'];

也许可以尝试先检查$\u POST成员是否已设置

而不是:

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


也许可以尝试先检查$\u POST成员是否已设置

而不是:

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


可能您正在使用来自
$\u POST
NULL
值覆盖
$\u SESSION
变量,因为如果使用链接从Page3.php跳到Page2.php,则
$\u POST
内容不存在

因此,您可以在将
$\u POST
值分配给
$\u会话之前验证该值是否存在,从而解决此问题。类似于以下代码:

Page 2.php

if( isset($_POST['sv_01'])
    $_SESSION['sv_01']=$_POST['sv_01'];
if( isset($_POST['sv_02']) )
    $_SESSION['sv_02']=$_POST['sv_02'];
Page 3.php

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

可能您正在使用来自
$\u POST
NULL
值覆盖
$\u SESSION
变量,因为如果使用链接从Page3.php跳到Page2.php,则
$\u POST
内容不存在

因此,您可以在将
$\u POST
值分配给
$\u会话之前验证该值是否存在,从而解决此问题。类似于以下代码:

Page 2.php

if( isset($_POST['sv_01'])
    $_SESSION['sv_01']=$_POST['sv_01'];
if( isset($_POST['sv_02']) )
    $_SESSION['sv_02']=$_POST['sv_02'];
Page 3.php

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

返回到第一页时,所有变量都为空?我在上面的示例中看不到任何原因,为什么会发生这种情况,但在使用会话之前,您应该检查会话是否已设置,以及如何清空?都是空的吗?你能打印$会话吗?你确定要从第3页跳到第1页吗?因为您可能会将会话1设置为无,因为您的第二页上有session1=post1,您无法验证是否有帖子,等等@MarcioSimao yes当我返回第一页时,所有变量都为空page@Andr埃卡蒂塔注意到我没有直接从第3页跳到第1页,我通过第2页返回-但是第2页上没有将变量值重新提交给会话的内容,所以应该可以吗?不确定我是否理解将其设置为“无”,但可能与下面的答案有关。。。当你返回到第一页时,你会尝试这样做吗?我看不出你上面展示的示例中有任何原因,为什么会发生这种情况,但是你应该在使用会话之前检查会话是否已设置,还有,如何清空?都是空的吗?你能打印$会话吗?你确定要从第3页跳到第1页吗?因为您可能会将会话1设置为无,因为您的第二页上有session1=post1,您无法验证是否有帖子,等等@MarcioSimao yes当我返回第一页时,所有变量都为空page@Andr埃卡蒂塔注意到我没有直接从第3页跳到第1页,我通过第2页返回-但是第2页上没有将变量值重新提交给会话的内容,所以应该可以吗?不确定我是否理解将其设置为“无”,但可能与下面的答案有关。。。我会试试这个,还有一个印刷品——就是这样。我将选择您的答案,因为它比下面的@user1404632更清楚地说明了为什么它会破坏它。感谢你们俩!太棒了,就是这样。我将选择您的答案,因为它比下面的@user1404632更清楚地说明了为什么它会破坏它。感谢你们俩!