我正在从数据库中检索数据以验证用户凭据。 如果密码不匹配,我希望将用户重定向到登录页面。 但是,这从未发生过。相反,我被重定向到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");
}
}
?>
为什么它会如此表现,如何解决?
答案 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;
}
}
?>
应该可以工作,因为你必须在发送标题后终止脚本。