【问题标题】:Exceptions: redirect or render?例外:重定向还是渲染?
【发布时间】:2009-11-10 18:56:35
【问题描述】:

我正在尝试标准化我在 Web 应用程序(自制框架)中处理异常的方式,但我不确定处理各种情况的“正确”方式。我想知道从 UI/用户友好的角度来看是否有最佳实践。

  1. 用户登录应用程序并打开两个显示相同屏幕的选项卡。在一个选项卡上,他们对对象FOO 发出删除命令。然后,在另一个选项卡中,他们单击FOO(不再存在)上的编辑命令;例如editObject.php?object_id=FOO 的 GET 请求。当他们对这个不存在的对象发出编辑请求时我该怎么办?

    -目前我正在将这些“丢失”的对象重定向到上一页,并显示“对象不存在”之类的错误消息。

  2. 用户发出 GET 请求以搜索带有 color=Red 的对象,例如searchObjects.php?color=Red。由于有人删除了 OBJECTS 表,返回这些结果的查询失败了。这是一个意外的异常,与 1) 不太一样。

    -目前我正在重定向到errorPage.php,并显示一条消息“意外错误”

  3. 一般来说,如果应该存在的GET/POST参数却神秘地丢失了,我该怎么办。也许有人试图注入一些东西?

    -目前我将这些视为 2)


在以上 3 种情况下,我应该怎么做?

  1. 在 url editObject.php?object_id=FOO 处呈现“对象不存在”视图
  2. 重定向到显示错误视图的控​​制器:header('Location: errorPage.php')
  3. 提供 404:不确定在 PHP/Apache 中执行此操作的语法
  4. 其他

【问题讨论】:

    标签: exception-handling redirect error-handling


    【解决方案1】:

    我会说渲染它并提供 404。这样,用户就有机会看到他们在 URL 中出错的地方,或者复制并粘贴它。如果你重定向到一个通用的错误页面,他们就没有这个机会了。

    提供 404 的 PHP 方式是

    header("HTTP/1.0 404 not found");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 2019-03-01
      • 2020-06-30
      • 2019-12-04
      • 2015-03-03
      相关资源
      最近更新 更多