Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 表单验证在同一页还是不同页?_Php_Forms - Fatal编程技术网

Php 表单验证在同一页还是不同页?

Php 表单验证在同一页还是不同页?,php,forms,Php,Forms,考虑以下两种简化方案: Script Name: script1.php Validate form fields and if validated; redirect user to another page... <form action=script1.php> form fields..... </form> 脚本名称:script1.php 验证表单字段,如果已验证;将用户重定向到其他页面。。。 表单字段。。。。。 第二种情况: Script Name:

考虑以下两种简化方案:

Script Name: script1.php

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

<form action=script1.php>
form fields.....
</form>
脚本名称:script1.php
验证表单字段,如果已验证;将用户重定向到其他页面。。。
表单字段。。。。。
第二种情况:

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...
脚本名称:script1.php
表单字段。。。。。
表单字段被发布到script2.php并在那里进行验证,然后用户被重定向到下一页。。。

第一种表单验证方法(在同一脚本中)比第二种方法(将表单数据发送到“中间页”进行验证/DB输入,然后重定向)好还是第二种方法比第一种方法好?为什么???

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

如果你想让它自己提交,你可以要求验证脚本,允许这两个脚本是干净和独立的

Script Name: script1.php

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

<form action=script1.php>
form fields.....
</form>
脚本名称:script1.php
需要“script2.php”;
/*脚本2执行所有验证*/
表单字段。。。。。

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

如果你想让它自己提交,你可以要求验证脚本,允许这两个脚本是干净和独立的

Script Name: script1.php

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

<form action=script1.php>
form fields.....
</form>
脚本名称:script1.php
需要“script2.php”;
/*脚本2执行所有验证*/
表单字段。。。。。

自我操作脚本不是问题。更重要的是分离关注点。如果html呈现在同一个文件中,则会得到大量的“意大利面代码”

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

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

include 'display_form.html.php';
仅当发送了无效表单时,才会加载这两个脚本(表单应使用POST方法提交)。当然,有效表单以
退出结束在重定向头之后

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

  • 用户是否需要登录?-如果会话另有说明,则重定向(可能使用当前url返回)
  • 用户需要是管理员吗?-显示错误或“未找到页面”以将其隐藏(在这种情况下,未登录的用户也应如此)
此外,“显示”和“提交”都可能被拆分为更小的操作,这些操作也依赖于简单的逻辑。例如,表单可能已经填充了数据,因为您正在编辑已保存的内容(所以它几乎就像表单已发送,但不会因为验证错误而显示)。这个文件可能增长得很快,如果它只控制数据流并加载所需的脚本就更好了


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

自拍脚本不是问题。更重要的是分离关注点。如果html呈现在同一个文件中,则会得到大量的“意大利面代码”

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

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

include 'display_form.html.php';
仅当发送了无效表单时,才会加载这两个脚本(表单应使用POST方法提交)。当然,有效表单以
退出结束在重定向头之后

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

  • 用户是否需要登录?-如果会话另有说明,则重定向(可能使用当前url返回)
  • 用户需要是管理员吗?-显示错误或“未找到页面”以将其隐藏(在这种情况下,未登录的用户也应如此)
此外,“显示”和“提交”都可能被拆分为更小的操作,这些操作也依赖于简单的逻辑。例如,表单可能已经填充了数据,因为您正在编辑已保存的内容(所以它几乎就像表单已发送,但不会因为验证错误而显示)。这个文件可能增长得很快,如果它只控制数据流并加载所需的脚本就更好了


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

两者都不是。验证客户端。这有很好的多边形填充。(显然,这并不意味着盲目信任用户输入。但是,至少这意味着,如果你得到垃圾数据,而不是试图找出它的错误并在浪费用户的时间重新加载页面后返回友好的错误,你可以抛出一个异常,让它冒泡出来,因为任何错误都有意义(如果没有其他错误,可能是500内部服务器错误)然后继续。)仅仅依靠客户端验证是危险的,因为用户可以很容易地禁用它。除了客户端验证之外,还需要服务器端验证……您阅读了我的其余评论吗?问题是,任何友好的验证都应该在客户端完成。任何实际的数据完整性安全要求都应该在服务器上。通常如果您的数据模型设置正确,这将自动发生。两者都不正确。请验证客户端。