PHP表单验证最佳实践

时间:2016-11-27 00:18:39

标签: php

这不是你怎么做的,而是更多的最佳实践问题。

我正在使用php-advanced-login框架为内部项目构建一个简单的登录应用程序。我通过使用在用户提交表单时初始化的类来验证登录表单,密码重置和通过cookie登录的方式。然后,该类验证所有内容,并在数组中返回任何错误并显示在表单中。

<?php if(isset($_POST['submit_login'])){
//load class
}
<!doctype html>
//form

我的问题是,让这个课程中的所有内容看起来有点混乱(看起来它比我用来做进一步解释的更难维护),因为有很多代码重新存在-使用。之前我做过的方法就是将我的代码分成几个带有函数的php文件,并在需要时将它们包含在内。在我看来,每个php文件都更短,更容易维护。我没有使用类而不仅仅使用方法的任何真正优势。

如果你已经设法跟随我的漫无目的,你对此有什么看法?我应该使用一个类并将所有内容放在一起,只需使用函数,这是另一种更好的方法吗?

1 个答案:

答案 0 :(得分:1)

由于您在评论中提到您不想使用框架,我认为最简洁的方法是至少模仿大多数框架的一些功能。这包括:

  • 创建逻辑目录结构。您可能有配置,验证,实用程序,视图,模型的目录。应该很明显在哪里寻找东西。如果您的应用程序增长到需要迁移到具有类似结构的框架的程度将会很有帮助
  • 创建具有一个功能的类。您可以使用函数执行此操作,但在全局级别使用所有可用的函数会使事情变得混乱。您可能具有检查密码是否有效的功能。为此,您可以散列输入密码,从数据库加载用户并将存储的密码与用户的密码进行比较。为了使你的功能更好,整洁,你可以将其拆分。但是,如果没有对象封装,您现在可以在全局使用x个函数。您可能还需要用于存储散列算法参数的变量。代码的其他区域不需要使用它,因此将它们隐藏在对象中。
  • 将共享功能保存在可以根据需要使用的小型简单类中。读取cookie之类的东西可能会在一些地方使用。在这种情况下,我认为对象没有比类更多的好处,但是如果你想编写测试(我强烈建议你这样做),你会发现使用对象的测试框架(PHPUnit,PHPSpec)更容易。你也永远不知道什么时候你的“简单功能”会变得更加复杂

BTW您链接到的github仓库是未维护的