【问题标题】:What is the proper way to nest PHP scripts?嵌套 PHP 脚本的正确方法是什么?
【发布时间】:2014-10-23 03:16:10
【问题描述】:

所以我一直在制作自己的网站,并且一直在尝试找到一种设置 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
}

还是有什么不同?

【问题讨论】:

  • 这是为了验证吗?您可以循环 $_POST 数据并检查必须设置的字段是否存在且不为空。

标签: php validation styles nested


【解决方案1】:

很多人似乎都担心这一点,尤其是在 PHP 中。本质上,您要说的是,我如何向我的应用程序/程序添加抽象层?

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

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

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

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

最后但同样重要的是,没有“正确”的做事方式。

【讨论】:

    【解决方案2】:

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

    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) }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-10
      • 2020-06-14
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 2017-01-16
      相关资源
      最近更新 更多