학교 프로젝트의 로그인 시스템을 개발하려고하는데 버그가 발생하여 수정 방법을 모르겠습니다.데이터베이스에서 데이터를 얻지 못했습니다
내 데이터베이스에는 암호가 spy123
이고 sha256 해시에 저장되어 있지만 PHP에서 가져 오려고하면 아무 것도 얻을 수 없습니다.
현재 코드 :
// checks if the user/password combination works.
// $username | String - the username of the user to login
// $password | 32byteHash - the hashed password of the user
// return | Boolean - Returns true if the password works for that user.
function forumLib_checkLogin($username, $password){
$goodLogin = false; //Assume the password is wrong.
$obtainUserPassword_query = "SELECT password FROM forum_users WHERE username = '$username'";
$dbc = forumLib_connectToDB();
$results = mysqli_query($dbc, $obtainUserPassword_query);
forumLib_closeConnectionToDB($dbc);
echo "query: $obtainUserPassword_query <br />";
echo "results: ".mysqli_fetch_array($results)."<br />";
$row = mysqli_fetch_array($results);
echo "row[0]: ".$row[0]."<br />";
echo "password: $password <br />";
echo "DBpassword: $passwordOnDB <br />";
//if user exists
if($results != false){
//get password from DB
$row = mysqli_fetch_array($results);
$passwordOnDB = $row['password'];
//check password
if($password == $passwordOnDB){
//successfull login
$goodLogin = false;
}
}
return $goodLogin;
}
출력 :
change password request detected
query: SELECT password FROM forum_users WHERE username = 'SpyMaster356'
results: Array
row[0]:
password: 7d9519224964c72a90b342c565fab1e4582d0e974043798f940b471304db0e24
DBpassword:
Current password does not match records.
SQL 쿼리 내가 수동으로 입력 할 때 내가 다시 7d9519224964c72a90b342c565fab1e4582d0e974043798f940b471304db0e24
를 얻을로하지 잘못된 것입니다.
이것은 정말 혼란 스럽습니다.
echo 대신 print_r ($ row)을 사용하면 실제로 데이터베이스에서 가져온 내용을 볼 수 있습니다. 또한 mysqli_query()에 대한 호출의 리턴 값을 테스트하여 실패했는지 확인하십시오. – Cfreak
mysqli_fetch_array를 실행할 때마다 결과 세트 내의 커서가 증가합니다. – hjpotter92
또한 '7d9519224964c72a90b342c565fab1e4582d0e974043798f940b471304db0e24' 출력은 쿼리에 의해 생성되지 않습니다. 그것은 함수에 제공된'$ password'에 의해 생성됩니다. – hjpotter92