【问题标题】:PHP Location Header Causing an ErrorPHP 位置标头导致错误
【发布时间】:2011-10-22 06:34:12
【问题描述】:

当用户成功登录时,我有以下标记:

header('Location: /members');

它过去总是有效的。但是,现在,当我尝试加载页面时,Chrome 给了我这个错误:

HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.

在 Firefox 上,我只是得到一个空白页面。当我将标头语句注释掉时,它可以工作,但没有重定向(显然)。

我已经尝试过打开和关闭输出缓冲,效果相同。有什么想法吗?

编辑:如果用户已经登录,我在代码的开头有一个 PHP 标头语句,它将用户重定向到成员页面。这会影响它吗?我没有收到任何已发送错误的标头...

【问题讨论】:

  • 你能把header调用的所有代码都贴出来吗?
  • 启用error_reporting或查看error.log
  • 提示:总是在header()之后使用exit()并在页面顶部写ob_start()

标签: php header


【解决方案1】:

只需输入 error_reporting(E_ALL) 和 ini_set("display_errors", 1),您就会发现问题所在。

【讨论】:

    【解决方案2】:

    安装 HTTP 扩展并改用它:

    http_redirect('/members');
    

    这应该可以解决问题。如果你没有安装它。你可以模仿它的作用。是explained in detail on the manual page,步骤简单:

    • 从相对 URI 创建一个绝对 URI,因为 RFC 的重定向必须有一个。
    • 检查是否已经发送了标头,如果已经发送,则不发送标头,否则发送。
    • 显示带有重定向链接的 HTTP 响应正文。
    • 退出脚本。

    如果你不关注the specs,你就不能指望浏览器可以正常工作。互联网上给出的许多示例提供符合重定向,所以不要被不良示例误导。

    除此之外 - 正如其他人已经建议的那样 - 在您的开发框中打开错误报告,以便您了解您的代码产生的任何通知和警告。同时处理这些问题。

    【讨论】:

    • 问题是,它之前运行良好。我已打开错误报告,但我从 Chrome 中收到错误消息,因此我实际上看不到该页面。此外,错误日志中没有任何内容。
    猜你喜欢
    • 1970-01-01
    • 2019-01-28
    • 2017-01-20
    • 2019-08-29
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多