例外:重定向还是渲染?

时间:2009-11-10 18:56:35

标签: exception-handling redirect error-handling

我正在尝试标准化我在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)


  4. 在上述3个案例中我应该做些什么?

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

1 个答案:

答案 0 :(得分:0)

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

PHP服务404的方式是

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