在同一页面或不同页面上进行表单验证?

时间:2016-10-06 00:58:32

标签: php forms

考虑这两个简化的场景:

Script Name: script1.php

Validate form fields and if validated; redirect user to another page...

<form action=script1.php>
form fields.....
</form>

第二种情景:

Script Name: script1.php

 <form action=script2.php>
 Form fields.....
 </form>

 Form fields are posted to script2.php and validated there and then the user is redirected to the next page...

表单验证的第一种方法(在同一脚本中)比第二种方法(将表单数据发送到&#34;中间页面&#34;用于验证/数据库输入然后重定向)或第二种方法更好首先,为什么??

2 个答案:

答案 0 :(得分:0)

从个人的角度来看,我发现拥有单独的文件更加清晰。这允许我稍后扩展系统并允许其他服务提交验证请求而不会过度混乱。 (对于某些事情,例如稍后的应用程序)。

如果你想让它自己提交,你可以要求验证脚本,允许两个脚本是干净的&amp;分开。

Script Name: script1.php

require 'script2.php';
/* Script 2 performs all validations */

<form action=script1.php>
form fields.....
</form>

答案 1 :(得分:0)

自我操作脚本不是问题。更重要的是分开关注点。您将获得大量if块&#34;意大利面条代码&#34;如果您的html呈现在同一个文件中。

如果您有条件地包括表单呈现和验证,那么解释器就不会解析它不需要的代码。

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    include 'submit_form.php';
}

include 'display_form.html.php';

只有在发送了无效表单时才会加载这两个脚本(表单应该使用POST方法提交)。当然,有效表单会在重定向标题后以exit;结尾。

这个&#34;前脚本&#34;很小,但它可能不仅包括这两个文件。在结构代码中,它通常会加载一些常用的函数,过程或模板(页眉/页脚)。您可以在此处添加一些特定于页面的身份验证和授权逻辑:

  • 用户需要登录吗? - 如果会话说没有重定向(可能有当前网址返回),
  • 用户需要成为管理员吗? - 显示错误或未找到&#34;页面#34;保持隐藏(在这种情况下,对于未登录的用户应该这样做),

也是&#34;显示&#34;并且&#34;提交&#34;可能会被分成更小的动作,这些动作也依赖于简单的逻辑。例如,表单可能已经填充了数据,因为您编辑了已保存的内容(因此它几乎就像发送了表单一样,但不会因为验证错误而显示)。如果该文件仅控制数据流并加载所需的脚本,则该文件可能会快速增长并且效果会更好。

在面向对象的编程中,主应用程序工厂负责使用类似的逻辑来构建所需的对象组合。它通常以不同的方式处理,但是一些与框架开发人员合作的人会感到惊讶。