我正在为我的网站编写基本向导。它将有4个步骤,每个步骤都需要有自己的URL。在继续之前,每个步骤必须首先验证表单。
如果给定步骤的表单无法验证,我不希望更改URL。但如果它通过,我确实希望它继续前进。
写这个的首选方法是什么?单独使用javascript进行验证是不够安全的。到目前为止我有两个想法,但我也不喜欢:
1)将表单发布到同一个脚本,如果通过则使用header()重定向到下一步 2)发送ajax帖子进行验证,然后使用location.href将用户发送到下一步(如果通过)。
有更好的方法吗?
谢谢,Brian
答案 0 :(得分:3)
我更喜欢选项#1,因为它不需要javascript。
但是,您还需要考虑当有人书签或直接跳到错误的步骤时会发生什么。
答案 1 :(得分:2)
您的选项#1正是我的选择。
答案 2 :(得分:1)
请记住,您可以将这两种方法结合起来:
你会使用标准技巧来做到这一点:
<form name="foo" action="bar.php" method="post">
<input type="submit" value="Submit Form" onclick="ajax_handler(); return false;" />
</form>
这需要一些称职的工程,以便ajax_handler()
可以使用与bar.php
相同的代码来处理表单数据。此外,您应该特别注意AJAX路径,以便像后退按钮这样的东西继续按照用户的期望工作。
答案 3 :(得分:1)
另一种选择是将所有验证逻辑(在这些步骤之间)放在一个单独的PHP页面中(然后总是得到POST
。)
在回发时,对当前步骤进行验证,并且(仅在有效时)分支到下一步。您还需要在帖子之间保留“之前的”验证。
您仍然可以different
和myform.php?step=1
意义上拥有myform.php?step=2
个网址,并且......通过一些简单的网址重写可能是myform/step1
,{{1} },...