如何控制PHP多页表单的流程?

时间:2010-09-10 10:41:31

标签: php forms controls

我有点像PHP新手 我已经开发了一个多页面的表单,目前工作正常 - 每个阶段都在另一个页面上(我使用会话来保留数据)。 但是我知道用户并不总是按照你想要的方式使用这些表单!

我想控制表单的流程。

  • 我希望用户能够使用浏览器返回&前进按钮易于使用。
  • 他们不应该通过直接在地址栏中输入表单阶段URL来跳过表单的一部分以获取表单中的后续阶段(基本上是跳过表单的一部分)。

  • 表单每次都不会流过相同的路径,它取决于用户选择接下来显示的阶段。

我想知道是否有人有任何想法来控制这个多页表单的流程谢谢!

4 个答案:

答案 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使它看起来好像是多页,当 - 事实上 - 它不是。

每种解决方案都有利弊。