嵌套PHP脚本的正确方法是什么?

时间:2014-10-23 03:16:10

标签: php validation styles nested

所以我一直在创建自己的网站,并且一直试图找到一种设置PHP脚本的好方法,这样它就不会太混乱。我遇到过两种“嵌套”脚本的方法,以便在遇到错误时不会继续运行,但只是想知道哪种方法可以更好地避免脚本注入,或者两种方式都无关紧要。

选项A(沿着该行向下运行页面):

function callExit($error) {
    //Close Database
    exit($error);
}
if (!$_POST['title']) { callExit("No title."); }
if (!$_POST['body']) { callExit("No body."); }
//Continue Script

或选项B(很多嵌套):

if ($_POST['title']) {
    if ($_POST['body']) {
        //Continue Script
    } else {
        //Close Database
    }
} else {
    //Close Database
}

或者有些不同?

2 个答案:

答案 0 :(得分:0)

我倾向于这样做,以强调可能性的多重选择:

if (!$_POST['title']) { callExit("No title."); }
elseif (!$_POST['body']) { callExit("No body."); }

或者,如果您有很多字段,请执行循环:

$required_fields=array("title"=>"No title", "body"=>"You are missing a body parameter");
foreach ($required_fields AS $fieldname=>$message) {
   if (!$_POST[$fieldname]) { callExit($message) }

答案 1 :(得分:0)

很多人似乎都担心这一点,特别是在PHP中。基本上,你所说的是,如何在我的应用程序/程序中添加一个抽象层?

您可以使用现有的验证框架。我不会命名框架,但你可以找到它们。

您还可以创建自己的验证类/函数,以抽象出这个“低级”样板代码,例如检查isset($_POST[X])

如果您实现了自己的验证框架/类,那么它将使您的应用程序更漂亮,并且肯定会减少API调用者必须拥有的代码行。

最后,你想要实现什么目标?您是否正在为将要使用一次的客户端构建一个应用程序,而不是更新,如果是这样,则不需要使代码漂亮。如果您对代码感到自豪,并希望它能够令人印象深刻,并希望学习,那么建立自己的验证框架/类。尽管现有代码库可以解决这个问题,但自己构建它只会成为开发人员/工程师的增长催化剂。

最后,但肯定并非最不重要的是,没有“适当的”做事方式。