我确信我只是忽略了一些东西,我花了几天的时间来解决这个问题,但似乎无法弄清楚。
在上一页登录后,我得到用户名和密码,
$username = mysql_escape_string($_POST['adminusername']);
$password = mysql_escape_string($_POST['adminpassword']);
然后我去数据库从数据库中提取用户名和密码,
$sql = "SELECT username, password FROM `weaponsadmin`";
$rows = $db->query($sql); while ($record = $db->fetch_array($rows)) {
现在这是让我感到困惑的部分,如果我有以下内容,无论我使用什么用户名或密码,它都不允许我登录,
if ( ($record[username]==$username) && ($record[password]==$adminpassword) ){
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $adminusername;
header( "Location: admin.php" ) ;
}
else {
header( "Location: index.php?login=error" ) ;
}
但是,如果我使用以下内容,如果用户名正确,它将允许我登录,但它允许我输入任何密码并且它可以工作,
$adminusername = $record[username];
$adminpassword = $record[password];
if ( ($adminusername==$username) && ($adminpassword==$adminpassword) ) {
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $adminusername;
header( "Location: admin.php" ) ;
}
else {
header( "Location: index.php?login=error" ) ;
}
所以总而言之,由于某种原因,该&&
部分似乎无法正常工作,如果有人可以帮助我编写代码并让我知道我的代码可以在哪里改进以获得更好的安全性以及如何使其正常工作,谢谢