标头(位置:URL)不起作用

时间:2012-12-26 14:18:49

标签: php redirect header

我正在从数据库中检索数据以验证用户凭据。 如果密码不匹配,我希望将用户重定向到登录页面。 但是,这从未发生过。相反,我被重定向到chat_main.php。

适用于所有其他情况(无效的电子邮件,有效的电子邮件和密码组合)。

这是我的代码:

<?php
session_start();
require_once("config/db_connect.php");
$usr=$_POST['email'];
$pwd=$_POST['password'];
$q="SELECT * FROM userdata WHERE email=\"$usr\"";
$info=mysql_query($q, $conn);
if(mysql_num_rows($info)!=1){
    header("Location: login.php?err=1");
}
else{
    while($data=mysql_fetch_array($info)){
        if($pwd!=$data['pwd']){
            header("Location: login.php?err=1");
        }
        $usr=$_SESSION['username']=$data['fname'];
        header("Location: chat_main.php?username=$usr");
    }
}
?>

为什么它会如此表现,如何解决?

2 个答案:

答案 0 :(得分:3)

添加退出;在每个标题行之后,使脚本退出并实际处理标题重定向。否则,它将继续运行并将点击下一个标题重定向..

答案 1 :(得分:0)

<?php
session_start();
require_once("config/db_connect.php");
$usr=$_POST['email'];
$pwd=$_POST['password'];
$q="SELECT * FROM userdata WHERE email=\"$usr\"";
$info=mysql_query($q, $conn);
if(mysql_num_rows($info)!=1){
header("Location: login.php?err=1");
exit;
}
else{
while($data=mysql_fetch_array($info)){
    if($pwd!=$data['pwd']){
        header("Location: login.php?err=1");
        exit;
    }
    $usr=$_SESSION['username']=$data['fname'];
    header("Location: chat_main.php?username=$usr");
    exit;
}
}
?>

应该可以工作,因为你必须在发送标题后终止脚本。