PHP exit()vs if - else语句

时间:2012-01-15 00:35:51

标签: php exit

验证然后只是退出()函数或将整个身份验证结果包装在if语句中是好的还是坏的做法?实施例

function foo($uid)
{

    $allowed = $auth->checkIfAllowed($uid);

    if ($allowed == false) exit();

        //continue with senstive code here

    }
}

OR

function foo($uid)
{

    $allowed = $auth->checkIfAllowed($uid);

    if ($allowed == true)
    {
        // do sensitive stuff
    } 
}

4 个答案:

答案 0 :(得分:4)

我想借此机会谈谈exit;(正如其他人所说的那样,第二个比第一个更明确,并且给你机会向用户发送一个很好的错误信息) 。我的主要牛肉(我有几个exit;)是人们应该停止在库中使用它,即可以/将在其他项目中使用的代码...你知道它有多刺激它是调试那些?抛出异常,触发致命错误,但给我带有描述的某事

/咆哮

答案 1 :(得分:3)

您的示例是等效的。

但是,最终用户突然退出脚本通常并不常用。相反,请向您的用户发送以HTML格式打印的有用错误消息,而不是例如从die()调用获得的纯文本。

function foo($uid)
{

  $allowed = $auth->checkIfAllowed($uid);

  if ($allowed == false)
  {
    $errormsg = "You are not allowed to view this page";
  }

  else 
  { 
    //continue with senstive code here    
  }
}

稍后,在HTML中打印错误,而不是仅仅中止脚本:

<div class='error'><?php echo $errormsg; ?></error>

答案 2 :(得分:0)

或者。我不认为这会有所作为。它完全相同。在编程中,有许多方法可以对事物进行编程,在大多数情况下从不以正确的方式进行编程。

答案 3 :(得分:0)

他们完全一样。缩进和编码风格是唯一的区别。在这两种情况下,除非成功完成身份验证,否则敏感代码将不会执行。

通常,在你的代码中表达更好,所以我推荐第二种方法。