我有点像PHP新手 我已经开发了一个多页面的表单,目前工作正常 - 每个阶段都在另一个页面上(我使用会话来保留数据)。 但是我知道用户并不总是按照你想要的方式使用这些表单!
我想控制表单的流程。
他们不应该通过直接在地址栏中输入表单阶段URL来跳过表单的一部分以获取表单中的后续阶段(基本上是跳过表单的一部分)。
表单每次都不会流过相同的路径,它取决于用户选择接下来显示的阶段。
我想知道是否有人有任何想法来控制这个多页表单的流程谢谢!
答案 0 :(得分:2)
将表单结果存储在SESSIONS中(如果敏感则加密它们)
然后只需检查每个表单是否设置了值并在必要时显示。
使用另一个会话来检查表单的“进度”,以防止用户跳过。 例如......
<?php
/* on form 3 */
if(isset($_SESSION['progress'] && $_SESSION['progress']==2)
{
//the second form has been filled out and validates
}
else
{
// the 2nd form hasn't been finished, redirect
}
?>
您也可以在会话中使用基于百分比的系统 - 值90表示90%的表单字段已完成 - 用于以可视方式向用户显示“进度”。
基本上在每个表单提交上,检查已提交的内容,如果预期,则设置适当的会话以重定向到下一个阶段。
检查每个表单上的每个设置会话,以确定用户是否应该在这里。
答案 1 :(得分:0)
将非当前字段的数据推送到浏览器中的隐藏字段(以节省时间和精力 - 只需序列化数组/对象)。
答案 2 :(得分:0)
我希望用户能够使用浏览器返回&amp;前进按钮
如果允许用户重新进入前一阶段,只需让他们在会话中重写当前阶段 如果没有,请将表单字段设置为只读,不要处理前几个阶段的已提交表单。
这是我在这里看到的唯一问题。
答案 3 :(得分:0)
您可以使用会话数据来保留多个页面之间的状态,也可以在每个页面上传输所有数据。通常你会用隐藏的字段做后者,或者你会创建一个幽默的形式,并使用javascript使它看起来好像是多页,当 - 事实上 - 它不是。
每种解决方案都有利弊。