Я строю простую функцию входа в систему для сайта, и я столкнулся с некоторыми проблемами. Когда я пытаюсь войти на сайт, я продолжаю получать ошибку, которая не совпадает с именем пользователя и паролем. Это, конечно, ошибка, которую я определил сам, но проблема в том, что я не должен ее получать в этом случае.MySQL-запрос, хотя PHP не возвращает значения
Я напечатал рассчитанный хэш для пароля и удостоверился, что этот шаг был правильно выполнен, каким он был. После этого я провел
SELECT * FROM members WHERE user='username' AND pass='hashed_password';
непосредственно к моей базе данных MySQL, напрямую предоставляя имя пользователя и хэш. Это вернуло желаемые значения. Мой PHP код выглядит следующим образом:
$dsn = "mysql:host=localhost;dbname=my_db";
$u = "localhost";
$pdo = new PDO($dsn,$u);
$query = $pdo->prepare("SELECT * FROM members WHERE user=':username' AND pass=':hashed_pass'");
$query->execute(array(':username'=>$username,':hashed_pass'=>$hashed_pass));
$result = $query->fetch();
if($result){
//Log in user
}else{
//Print error
}
Это не возвращает ничего, даже если я поставить правильные значения, он продолжает давать мне ошибку. Я не уверен, что может вызвать проблему, но если я сделаю предположение, я бы сказал, что это связано с кодировками. Моя база данных использует UTF-8. Хотя, я все еще получил желаемые результаты от MySQL при запросе базы данных напрямую, используя SSH с ISO-8859. Поэтому я действительно не уверен. Любая помощь приветствуется!
Откуда берутся $ username и $ hashed_pass, и вы уверены, что они содержат правильные значения? Используйте эхо, чтобы подтвердить это. –
Это совершенно не связано, но вам лучше выбрать пользователя с именем пользователя, а затем совместить пароль получающейся таблицы пользователей с хешированным паролем с помощью php. – CreativityKills
@CreativityKills Не уверен, что я согласен с этим. –