1

我有一个登录页面,它检查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;
                }

请帮我找出我哪里出错了

4

4 回答 4

2

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

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

于 2012-04-24T15:48:58.497 回答
2

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

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

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

于 2012-04-24T15:50:36.073 回答
1

如果你想使用header(),你必须echo在它之前没有任何东西。

于 2012-04-24T15:48:39.630 回答
0

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

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

于 2019-01-18T11:37:09.260 回答