【问题标题】:Page not redirecting properly with header("Location: ***.php");页面没有正确重定向标题(“位置:***.php”);
【发布时间】:2014-02-10 23:59:38
【问题描述】:

我在下面的代码中遇到了问题。我不知道为什么带有标题/位置的第二个总是给我一个空白页。

index.phpuser.phplogin.php 都在主文件夹中。

以下输出false

<?php 

    include('functions/check.php');


    if (test())
        {
            echo "True";
        }
    else 
        {
            echo "false";
        }

    ?>

但是当我尝试这个时,我得到一个空白页:

<?php 

    include('functions/check.php');


    if (test())
        {
            header("Location: user.php");
        }
    else 
        {
            header("Location: login.php");
        }

    ?>

我尝试了所有类型的不同变体:

header("Location: /login.php");

【问题讨论】:

  • 空白页通常意味着错误报告已关闭。启用它并使用报告的错误更新您的问题。至于Warning: Cannot modify header information - headers already sent bystackoverflow.com/questions/8028957/…

标签: php header location redirect


【解决方案1】:

找到了一个非常有用的解决方法:

// 在文档开始处

 <?php ob_start(); ?>

//在文档末尾

<?php ob_end_flush(); ?>

【讨论】:

    【解决方案2】:

    使用完整 URL 而不是相对 URL。

    http://us3.php.net/manual/en/function.header.php

    【讨论】:

    • @John_Nil 还要确保在发送标头之前没有输出任何数据。您没有在页面上显示任何内容?查看源代码并检查。标头必须是最先发送的内容。
    • 我允许显示所有错误,我得到了这个:警告:无法修改标头信息 - 标头已发送(输出开始于 /hermes/bosoraweb101/b5/ipg.gfgdgfgcom/folder/functions/ connect.php:29) 在第 14 行的 /hermes/bosoraweb101/b5/ipg.gfgdgfgcom/folder/index.php 中
    • connect.php 中的第 14 行就是这个 "?>" ,php 文件的结束标记
    • 我会在制作该页面所涉及的所有文件中的某处寻找流氓回声。看起来 connect.php 或 check.php 可能是罪魁祸首。基本上,在您输出数据的地方。如果您想发布文件,我可以提供帮助。
    • check.php 正在返回 true/false ,这可能是问题吗?
    【解决方案3】:

    您必须确保在调用 header("Location: xxx"); 之前没有打印任何文本;

    检查您包含的代码是否有 echo 或 print_r。

    【讨论】:

      【解决方案4】:

      在发送新标头之前,页面有某种输出。在使用该命令之前,请确保绝对没有任何内容输出到页面。它甚至可能是一个奇怪的符号,例如记事本在文件的开头添加了一个奇怪的符号,它是不可见的,但它就在那里,所以它会以 HTML 的形式打印到页面上。

      【讨论】:

        猜你喜欢
        • 2019-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-08
        • 1970-01-01
        • 2020-10-10
        • 2013-02-08
        相关资源
        最近更新 更多