我相信,我只是忽視的東西,我花了幾天這方面的工作,並不能似乎弄明白不工作。簡單,如果()如預期
前一頁我得到的用戶名和密碼在登錄後,
$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") ;
}
在總結
所以出於某種原因在&&
部分似乎並不正常工作,如果有人可以幫助我的代碼,讓我知道我的代碼可以更好的安全性,以及如何使這項工作正確地加以改進,感謝
數組索引應該是整數或字符串,所以'$ record [username]'應該是'$ record ['username']'。沒有引號,PHP試圖找到'username' /'password'常量。文檔:http://php.net/manual/en/language.types.array.php – Jasper
'$ adminpassword == $ adminpassword'永遠是真的.... – Wrikken
@Wrikken yup這是問題,謝謝我知道它是很簡單的 –