使用SESSION控制PHP WebApp状态

时间:2011-06-30 22:55:50

标签: php forms session wizard

我正在创建一个表单向导,要求用户单步执行并完成每个步骤,然后再转到下一步。

现在,一旦验证并完成了一个步骤,我将$_SESSION['step']切换到下一步,并在下一步加载时检查该变量以确保它有效。如果用户尝试跳到不按顺序执行的步骤,则$_SESSION['step']会阻止加载该步骤。

这是正确的做法吗?此外,一旦完成一个步骤,我希望用户能够返回并编辑在任何给定的上一步骤中输入的值。我的方法不允许这样做,因为我不确定如何将会话更改为他们正在重新访问的步骤而不知道它是否是有效请求。

对此的任何意见都将非常感谢!

1 个答案:

答案 0 :(得分:2)

这种方法没有任何问题,尽管您可能有点受限,因为这不仅适用于多种形式。但是,如果这只是一个小应用程序,那么不用担心。

第二个问题我不确定我理解,但$ _SESSION可以接受任何数据类型,包括数组,所以只需填写一个$ _SESSION,告诉你到底是什么以及你在表单中做了什么;

$_SESSION['my_form'] = array (
   'current_step' = 'step_2',
   'step_1' = array ( // the form elements ),
   'step_2' = array ( // the form elements ),
   'step_3' = array ( // the form elements ),
   'step_4' = array ( // the form elements ),
) ;

接下来,您可以正常地在每个点提供验证。你也可以在每个表格中放一点标记,无论它们是否已填写;

   'step_2' = array (
      'complete' = true,
      // form elements / fields here
   ),

另一种切片方法是使用数千种动态形式中的一种。例如,使用JQuery,您可以使用Accordion插件(来自JQuery UI)在一个HTML页面中模拟整个事物。