【问题标题】:php header() working in localhost but not working on live server?php header() 在本地主机上工作但不在实时服务器上工作?
【发布时间】:2011-10-26 21:10:56
【问题描述】:
if ($num_rows == 0 && $num_rows2 == 0) {
    echo 'result1';
    header('Location:enter-work.php');
    die();
} else if ($num_rows >= 0 || $num_rows2 >= 0) {
    echo 'result2';
    header('Location:similar-work.php');
    die();
}

我有上面正在测试的代码,每次我用此代码刷新页面时,它都会正确地回显示例文本“result1”或“result2”,但它不会重定向到 enter-work。 php 或类似-work.php 就像它在我的本地主机服务器上一样。在我的本地主机服务器上,我什至可以将其链接到在线网站(即 google.com)。我在编写任何 html 之前输入了上面的代码 - 所以甚至在声明 doctype 之前。

不确定是什么原因造成的,需要一些帮助。

编辑:正如 Pekka 在他的 cmets 中提到的(在选定的答案中),问题是我在 header() 函数之前有回声和空格。

【问题讨论】:

  • 你能说得更具体点吗?你得到什么错误?在我的本地主机上它也可以工作。
  • 我没有收到任何错误,例如“未定义标题”。它只输出“result1”或“result2”,然后是一个空白页,因为我之后使用了 die() 函数。

标签: php header location


【解决方案1】:

在发送标头之前不得输出任何内容。

如果您这样做,本地服务器和实时服务器的行为会有所不同,这可能是因为 output buffering 设置不同。

无论如何,如果您删除回声,它应该可以工作。

【讨论】:

  • 我刚刚尝试过这个并删除了我在 header() 函数之前拥有的每一个 echo 函数。在 header() 函数之前也没有其他 print() 函数。它没有用。我还尝试让 doctype 和开头的标题标签出现在我的 header() 函数之前,但这也不起作用。
  • 这很奇怪。可以试试绝对网址吗? (http://...) 但大多数浏览器应该在没有的情况下接受它
  • 这也不起作用,你能给我一个关于在输出缓冲设置中改变什么的提示吗?我是新手。
  • @Qlidnaque 尝试一个完全空的 PHP 脚本并将 header() 放入第一行。这行得通吗?
  • @Qlid 我认为您在标题之前输出了一些东西 - 也许某处有一些空格?
【解决方案2】:

对于任何人仍然面临同样的问题: 首先尝试yourfile.php 中的简单header() 代码,如果问题已解决,则删除任何其他内容,这意味着旧代码中的问题。

second : header () 即使与其他内容(如 echo "" 等...

最后:如果您尝试了简单的header() 代码,但问题仍未解决,请联系您的托管服务提供商。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-12
    • 2016-08-04
    • 2014-01-15
    • 2016-03-05
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    相关资源
    最近更新 更多