PHP退出的最佳实践()

时间:2014-08-12 15:55:51

标签: php html

我正在开发一个PHP项目,我有一个名为login.php的文件。此文件包含一个HTML代码,该代码基本上由一个包含2个输入(用于电子邮件和密码)和提交按钮的表单组成。在HTML之前有一个PHP脚本,用于检查输入是否有效(非空,用户存在于数据库中)。我使用隐藏的输入字段(称为formsubmitted)来检查用户是否按下了提交按钮。如果值有效,那么PHP脚本会将用户重定向到主页,否则,PHP脚本会打印一个HTML div,我在其中存储错误消息,然后是表单的HTML。

我想只打印错误div,而不是HTML的其余部分,为此我可以使用exit()函数。现在我不知道这是不是一个好习惯,我搜索过网络但没有找到任何有用的东西。如果有人能告诉我是否可以这样做,我将不胜感激。 谢谢!

以下是我的代码简要介绍的方式:

<?php
if (isset($_POST['formsubmitted'])) {
    //check if the email and password are valid
    if (valid) {
        header("Location:home.php");
    } else {
        echo "<div id='error-section'>";
        echo "message";
        echo "</div>"
    }
}
exit();
?>
<!DOCTYPE html>
<html>
...............
</html>

3 个答案:

答案 0 :(得分:5)

回答你的问题:我个人不会在你的代码中的任何地方使用exit()语句(除非它是在REST API echo(json_encode(array()) echo语句之后。)它只会导致随着调试错误,很多头疼。

(它还可以打破\ob_*()\调用以及大多数框架的显示模块 - 因为框架无法获得它的回应语句。)


我的实践:

我的表单中总是有一个.errors div:

<?php if (isset($errors) && !empty($errors): ?>
     <?php foreach ($errors as $error): ?>
          <div class="alert alert-danger" role="alert">
               <strong>Error: </strong> <?php echo $error['message'] ?>
          </div>
     <?php endforeach; ?>
<?php endif; ?>

<form>
     <!--- form here -->
</form>

form errors

通过这种方式,您只需将$errors数组传递到表单中,所有内容都可以正常运行,您可以避免使用exit() - 使用exit()有时间和地点,但是因为它没有给你一个消息或记录任何东西,以后调试可能是一种巨大的痛苦。

作为结束语,此方法允许您将数组传递给错误,如下所示:

array(
     'first_name' => 'First Name Required',
     'last_name' => 'Last Name Required',
     'zip_code' => 'Must enter a valid zip code'
)

这使您可以在渲染表单时在输入字段中添加.error类,这将有助于您的用户找到哪个输入存在问题 - 总是很好:

<input id="first_name" type="text" class="my_input_class<?php (isset($errors) && isset($errors['first_name'])) ? ' error' : '' ?>">

答案 1 :(得分:1)

试试这个:(更新)

<?php
    if (isset($_POST['formsubmitted'])) {
        //check if the email and password are valid
        if (valid) {
            header("Location:home.php");
        } else {
            die("<html>
                   <head>
                      <!-- ADD STUFF HERE IF YOU WANT-->
                   </head>
                   <body>
                      <div id='error-section'>message</div>
                   </body>
                 </html>");
           //you can use exit if you want too
        }
    }
    ?>
    <!DOCTYPE html>
    <html>
    ...............
    </html>

答案 2 :(得分:0)

最佳做法是显示带有错误消息的表单,以便用户有机会再试一次。无效凭证可能有多种含义。在任何情况下,您都不应该只为用户显示错误消息和死胡同。提供有意义的错误消息,并有机会再试一次。