Header()函数无法正常工作

时间:2012-08-13 06:39:13

标签: php mysql

每当verifyUser返回true时,if语句应该执行但由于某种原因而不是转到标题位置,页面只是刷新并且发生了所有这一切。我已经检查过以确保输入信息是正确的,并且当信息不正确时,else语句执行得非常好。如果有人对于为什么会发生这种情况有任何想法,请告诉我。谢谢。

这是创建header()语句的段:

function validateUser($name, $pass)
{
    $check = verifyUser($name, md5($pass));

    if($check)
    {
        $_SESSION['status'] = 'authorized';


        header('location: index.php');


    } else{

        echo'Please enter a correct username and password <br />';
        echo "<a href='http://localhost/cms/admin/login.php'>Try Again?</a>";
        exit;
    }



 }

这是verifyUser函数,以防任何人需要它。

   function verifyUser($name, $pass)
   {
// Escape strings
$username = mysql_real_escape_string($name);
 $password = mysql_real_escape_string($pass);

$result = mysql_query("select * from users where username='$username' and password='$password' limit 1");

if (mysql_num_rows($result)>0)
{
    return true;
} else{
    return false;
}

  }

5 个答案:

答案 0 :(得分:0)

尝试使用“url”而不是“location”:

header("refresh:1;url=index.php");

答案 1 :(得分:0)

您可以将此行放在项目的第一行(实际上是在发送任何输出之前),否则header函数在发送任何输出后永远不会起作用(例如html代码或echo打印等);

ob_start();

或者,在发送新标头之前检查是否已发送标头;

if(!headers_send()){
   header("header params...");
} else {
   echo "<script>window.location.href="index.php"</script>";
}

答案 2 :(得分:0)

检查以确保$_SESSION['status'] = 'authorized';已定义

答案 3 :(得分:0)

header()不起作用的最常见原因是因为首先输出了其他内容。只有在将任何其他内容发送到浏览器之前,才能调用header()

如果是这种情况,PHP将在调用header()时抛出错误。如果您没有在页面上显示错误,则可以检查错误日志以查看是否发生了这种情况。

您还应该在die()来电之后(或之后很快)立即致电exit()header(),以防止重定向标头后发生任何其他事件。即使在初始header()调用成功的情况下,程序后期的某些内容也可能导致重定向失败,这是不太可能的。

答案 4 :(得分:-5)

在mysql查询中,使用变量名称的引号如下:

mysql_query("select * from users where username="'".$username."'" and password="'".$password."'" limit 1");