如何避免在使用PHP的多步骤表单会话之间丢失信息?
我正在使用php和会话创建一个多步骤表单,但是,当我来回移动时,会丢失前面的值。任何解决这个问题的建议如何避免在使用PHP的多步骤表单会话之间丢失信息?,php,forms,Php,Forms,我正在使用php和会话创建一个多步骤表单,但是,当我来回移动时,会丢失前面的值。任何解决这个问题的建议 <form id="propertyform" method="post" action="industrial.php"> <select class="element select small" id="element_1" name="property"> <option value="" selected="selected">
<form id="propertyform" method="post" action="industrial.php">
<select class="element select small" id="element_1" name="property">
<option value="" selected="selected"></option>
<option value="industrial" >Industrial</option>
<option value="land" >Land</option>
<option value="office" >Office</option>
</select>
</form>
您是否在会话中设置表单中的值 范例
<form id="step1">
<input type="text" name="firstQuestion" id="firstQuestion"
<? if(isset($_SESSION['firstQuestion'])): ?> value="<?=$_SESSION['firstQuestion']?>"
<? endif; ?> >
<select class="element select small" id="element_1" name="property">
<option value="" <?php if(isset($_SESSION['property']) && $_SESSION['property'] == ""): ?> selected="selected"<? endif; ?> ></option>
<option value="industrial" <?php if(isset($_SESSION['property']) && $_SESSION['property'] == "industrial"): ?> selected="selected"<? endif; ?>>Industrial</option>
<option value="land" <?php if(isset($_SESSION['property']) && $_SESSION['property'] == "land"): ?> selected="selected"<? endif; ?>>Land</option>
<option value="office" <?php if(isset($_SESSION['property']) && $_SESSION['property'] == "office"): ?> selected="selected"<? endif; ?>>Office</option>
</select>
</form>
要防止刷新和历史导航触发表单处理,请在表单处理程序完成后向流中添加类似的内容:
header("Location: myStep2.php");
这会将用户重定向到myStep2.php,并防止值被踩踏
注意,如果您确实遵循此方法,并且需要允许用户返回到以前的页面,则需要提供导航菜单、按钮、链接等,以启用此功能。按Back(后退)将重新提交上一页的值。我为心理学市场开发了一款产品,可进行250个基于心理学的问题测试。为了做一个不是完全压倒性的测试,我将表单分成25个问题段,然后通过附加顺序ID的div标记以循环方式输出,即div1、div2、div3。每个div都设置为显示:除第一个之外没有 然后,我为用户提供了一个切换当前div+1的按钮,即如果在div 1上,它将执行$div2.show等操作。返回按钮则执行相反的操作 重要的一点是,表格涵盖了所有div。然后,只需将最后的“前进/后退”按钮替换为“提交”按钮即可 瞧!是的,技术含量低,但速度快……而且前进或后退都不会失去价值 下面是一个粗略的例子:
<form>
<div id="div1">
First 25 Questions
<input type="button">shows next div</input>
</div>
<div id="div2" style="display:none">
Second 25 Questions
<input type="submit">Submit Form</input>
</div>
</form>
您正在重新填充会话中的表单控件值吗?基本上,我是在表单的第一步。工业土地办公室所以当我从下拉列表中选择一些内容并发布到Industrial.php并单击“上一步”时,我希望下拉列表中的值与前面选择的值相同。更新答案以添加您的选择和必要的代码。这是什么,HTML 4?这些天谁在标签上使用了所有的大写字母?你必须先检查isset吗?我可以填充除下拉列表以外的值。@mellamokb取决于你的php安装。如果你试图调用一个尚未设置的变量,php会给你一个通知。所以这取决于你的设置,我这样做是因为它可以跨设置工作。@AdityaShukla对于下拉列表,你必须检查选项的值是否等于你的会话值,并将所选内容添加到选项中。太棒了,这是一种非常优雅和聪明的方法。