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更清楚地说明了为什么它会破坏它。感谢你们俩!