我需要有关此代码的帮助才能输出错误的用户名或密码,但它不会:(
<?php
include 'functions.php';
if(loggedin()){
header("Location: index.php");
exit();
}
if(isset($_POST['login'])){
$username=$_POST['Username'];
$password=$_POST['Password'];
if(isset($_POST['rememberme'])){
$rememberme = $_POST['rememberme'];
}
if($username&&$password){
$login = mysql_query("SELECT * FROM php_customer WHERE Username='$username'");
while($row = mysql_fetch_assoc($login)){
$db_password = $row['Password'];
if($password == $db_password){
$loginok= TRUE;
}
else{
$loginok= FALSE;
}
if($loginok==TRUE)
{
if($rememberme=="on"){
setcookie('Username',$username, time() + 7200);
}else if ($rememberme==""){
$_SESSION['Username'] = $username;}
header("Location: index.php");
exit();
}
echo "Incorrect Username or Password";
}
}
} ?&GT;
我尝试按$loginok=false;
添加它,但没有任何效果。我不希望你们对我说心理,这是1行代码有点事。同样是的,我知道如果您将用户名存储为cookie,则可以登录。只是试图验证atm。
答案 0 :(得分:0)
在执行SQL查询之前,将标志设置为false:
$loginok = FALSE;
$login = mysql_query(....);
为什么呢?因为SQL查询显然不会为表中不存在的用户名返回任何内容。
这也意味着,你需要确保行echo "Incorrect Username or Password";
和基于$ loginok的if语句不在通过记录集的循环中,但是在它之后。 这意味着您需要学习如何正确缩进代码,以便明确if-statements和循环的开始和结束位置。