每当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;
}
}
答案 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");