【问题标题】:How to display errors to the users in a proper way?如何以正确的方式向用户显示错误?
【发布时间】:2012-02-18 09:44:19
【问题描述】:

我正在构建一个大型 Web 应用程序,我需要一个体面的系统来向用户显示错误(使用 PHP 和非侵入式 JavaScript)。到目前为止,当检测到错误时,应用程序会重定向到 error.php 页面,并根据链接显示一条消息。

例如,如果用户提交了accountCreation.php 空白的表单,那么它会重定向到www.example.com/error/FIELD_IS_EMPTY,然后error.php 检索要显示的消息并打印出来,如下所示:

switch ($_GET['message']) {
case 'FIELD_IS_EMPTY':
    echo "You can't leave the field blank.";
    break;

case 'TOO_LONG':
    echo "Text must be shorter than 128 characters.";
    break;

default:
    break;
}

至少它有效,但我不知道这是否是一种可扩展的方式。此外,如果有人输入www.example.com/error/FIELD_IS_EMPTY,它会显示错误,即使用户从未提交过表单。有人对如何正确执行此操作有任何建议吗?谢谢!

【问题讨论】:

  • 严格来说这不是错误,而是常规消息。因此,我认为将用户重定向到任何地方都没有意义。
  • 我发布了一个链接,其中包含我对类似问题的回答。不过,这很微不足道
  • 您确定最好不要重定向吗?我同意它对用户更友好,但如果你有很多可能的错误,它可能会有点混乱
  • 什么?这里有什么乱七八糟的?

标签: php user-interface error-handling


【解决方案1】:

处理错误的最佳方法是

  1. 404、505、303相关错误,可以重定向到标准错误页面。根据错误状态动态处理错误信息
  2. 与字段信息相关的错误、错误条目等。处理同一页面上的内容并将其显示在那里。

【讨论】:

  • 为什么要重定向?依次发送301和503有什么意义?
  • @Col.Shrapnel:对于显示自定义错误消息,这是最好的方法。而不是默认消息。
  • 如果您能够发送 HTTP 标头,您也能够发送自定义错误页面。那么,问题又来了——为什么要重定向?
【解决方案2】:

你有没有想过用一个简单的方法来阻止对这个页面的直接访问,比如:如果用户完成了你创建一个常量(如$_SESSION['formComplete'] = true;)的表单,并在你想要控制错误的页面中放置一个脚本检查是否设置了常量,否则重定向到另一个页面。这里有一个示例:

if(empty($_SESSION['formComplete'])) {
    header("location:index.php"); 
    die();
}

【讨论】:

    猜你喜欢
    • 2020-01-30
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    相关资源
    最近更新 更多