【问题标题】:header('Location:') not redirecting标头('位置:')不重定向
【发布时间】:2012-04-24 15:46:18
【问题描述】:

我有一个登录页面,它检查usernamepassword,如果用户提供的凭据匹配,它会设置会话并重定向用户,它适用于我的godadd 托管帐户,但现在我有了转移了我的主机,突然它停止工作了,下面是代码

if (count($result) > 0)
            {               
                $row= mysql_fetch_array($result);
                $userID = $row['userID'];               
                $firstName = $row['FirstName'];         

                $isActive = $row['IsActive'];

                if ($isActive == '1')
                {

                    $_SESSION['user'] = $firstName;     
                    //var_dump($firstName); //it gives me the right username                
                    //echo" - here";  //this also gets echoed
                    header("Location: http://google.com/"); //it just dies silently
                    exit;
                }

请帮我找出我哪里出错了

【问题讨论】:

  • 您是否启用了错误报告?
  • @jeroen 不,我没有启用错误报告
  • 从那开始,看看它是否能给你任何额外的信息。
  • @jeroen 好的一个断章取义的问题我是否必须获得对 cpanel 的访问权限才能打开错误报告?因为目前我无法通过 ftp 访问,是否有任何捷径
  • 不,只需将 ini_set('display_errors',1); error_reporting(E_ALL | E_STRICT); 添加到您的 php 脚本的顶部。

标签: php hosting hostmonster


【解决方案1】:

您需要确保在标头标记之前不输出任何内容。由于它以前工作过,我认为在调用 header 之前你是 echo'n 的东西不是错误,并且由于你没有看到输出,我认为它正在输出空白。在某些地方,一些空白和/或不可见字符可能会潜入文件中:

将光标放在开始 PHP 标记 (<? or <?php) 之前并按几次退格键,然后按 delete 删除 <,然后重新键入 <。这将确保在您的标题之前没有不可见的字符被输出到浏览器。

然后浏览该文件包含的所有文件,并执行相同的操作,并删除文件末尾的所有?>。如果这些文件包含任何其他文件,请在它们上重复此操作。

【讨论】:

  • @john 确保在 require_once 包含的文件中执行相同的操作,以及它包含/需要的任何文件等等。然后在这些文件的末尾确保没有输出换行符。 (最简单的方法是删除?>,如果有的话。文件末尾不需要一个。
  • 如果您使用 Notepad++,您还必须注意不要使用带有 BOM 的 UTF8 编码文件
  • @PaulP.R.O.对不起,我的电源坏了,在@jeroen 指导我打开错误报告后,我得到了输出已经在一行发送的错误,所以在我包含的文件中,它是一些额外的空格,所以你离错误非常近感谢您的宝贵时间
【解决方案2】:

在调用 header() 之前你有输出任何东西吗?

如果是这样,请将 ob_start() 放在脚本的开头,或者确保在调用 header() 之前没有回显任何内容

【讨论】:

  • 我没有在标题前回显任何内容
【解决方案3】:

如果你想使用header(),你不能在echo之前的任何东西。

【讨论】:

  • 在调用标头之前我没有回显任何内容,请参阅它在仅检查 db 连接是否成功的问题中被注释掉,我刚刚开始会话并包含一个 php 文件 require_once
【解决方案4】:

ob_start(); 添加到脚本的开头并将ob_end_flush(); 添加到脚本的末尾以避免此问题。

ob_start();将打开输出缓冲和 ob_end_flush();将发送最顶层输出缓冲区的内容并关闭此输出缓冲区。

【讨论】:

    猜你喜欢
    • 2016-12-20
    • 2014-01-10
    • 1970-01-01
    • 2015-02-04
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 2022-01-17
    相关资源
    最近更新 更多