Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Header()函数工作不正常_Php_Mysql - Fatal编程技术网

Php Header()函数工作不正常

Php Header()函数工作不正常,php,mysql,Php,Mysql,无论何时verifyUser返回true,都应该执行if语句,但由于某种原因,页面只会刷新,而不会转到页眉位置。我已经检查了输入信息是否正确,当信息不正确时,else语句执行得非常好。如果有人知道为什么会发生这种情况,请告诉我。多谢各位 以下是标题语句所在的段: function validateUser($name, $pass) { $check = verifyUser($name, md5($pass)); if($check) { $_SESS

无论何时verifyUser返回true,都应该执行if语句,但由于某种原因,页面只会刷新,而不会转到页眉位置。我已经检查了输入信息是否正确,当信息不正确时,else语句执行得非常好。如果有人知道为什么会发生这种情况,请告诉我。多谢各位

以下是标题语句所在的段:

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;
    }



 }

在mysql查询中,对变量名使用引号,如下所示:


mysql_queryselect*来自用户名为“.$username.”和密码为“.$password.”的用户,限制为1

尝试使用url而不是位置:

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

在发送任何输出之前,您可以将这一行放在项目的第一行,否则在发送任何输出(如html代码或echo打印等)后,标题函数将永远无法工作

ob_start();
或者,在发送新的头之前,检查是否已经发送了头

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

检查以确保$_会话['status']='authorized';是定义的

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

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


您还应该在头调用之后立即调用die或exit,或者在头调用之后尽快调用a,以防止在重定向头之后发生任何其他事情。不太可能,但也可能是程序中稍后的某些内容也会导致重定向失败,即使在初始标头调用成功的情况下也是如此。

请不要使用mysql_*函数,它们不再被维护,社区已开始重新启动。相反,你应该学习并使用或。如果你不能决定,将帮助你做出选择。如果你想学习,谢谢。这是一个较老的教程,我现在还在学习过程中。你知道为什么header函数可能不起作用吗?忽略教程,使用我链接的PDO。至于它为什么不起作用,恐怕我不会帮助您编写使用mysql_*函数的代码。更改为PDO,我会告诉您错误:实际上,不要忽略教程-如果您真的想让世界变得更美好,请联系作者,让他们更新它。@cadavid4j,您在使用会话之前启动会话了吗?使用quote是一个好习惯,这不会对查询产生任何影响。你在什么基础上提出这个解决方案?不幸的是,这没有改变任何东西。好的,你有没有试着在代码中加入一些回音来调试它?例如:回显verifyUser函数正在运行的sql语句,然后尝试复制它并手动运行它。然后回显$check的值,看看它是否返回了您期望它返回的值。这将使您更深入地了解代码实际上在做什么,而这并不总是您所期望的-
if(!headers_send()){
   header("header params...");
} else {
   echo "<script>window.location.href="index.php"</script>";
}