Я застрял в проблеме с моим скриптом входа, который не будет успешно извлекать данные пароля из инструкции sql, которую я им даю.Попытка получить пароль из базы данных
Пользователю предлагается ввести их электронный & пароль,
<p><strong>Email: </strong><input type= "text" name= "email"></p>
<p><strong>Password: </strong><input type= "password" name= "password"></p>
Через POST, я беру то, что они ввели из формы и положить его в SQL заявление.
$taremail = filter_input(INPUT_POST, 'email');
$tarpasswd = filter_input(INPUT_POST, 'password');
$sql = "SELECT email, password FROM members WHERE email = '".$taremail."'
AND password = PASSWORD('".$tarpasswd."')";
Наконец, я проверяю базу данных, чтобы узнать, действительно ли этот адрес электронной почты и пароль они набрали, в базе данных.
$result = mysqli_query($con, $sql) or die(mysqli_error($con));
if(mysqli_num_rows($result) == 1){
setcookie("auth", "1", time()+60*30, "/", "", 0); //create cookie for the logged in user
$display = "<h2>You have successfully logged in!</h2>
<p>Click the link below to go to our main page</p>
<a href=\"main.php\">Main Page</a></br>
<a href=\"../login.html\">Log out</a>";
} else {
$display = "<h2>This account is not registered!</br>
Please make sure to register before trying to log in.</h2>
<a href=\"../register.html\">Register here!</a>
<a href=\"../login.html\">Login page</a>";
}
Это либо возвращает то, что данное письмо и пароль действительно содержатся в базе данных, или нет. Достаточно просто?
Моя проблема заключается в том, что он всегда выполняет мой оператор else{}
, говоря, что я еще не зарегистрирован.
Следует отметить, что на моей странице регистрации пароль, который они дают, помещается через метод PASSWORD()
, поэтому он становится хешированным varchar в базе данных ... Исх. letmein = * D37C49F9CBEFBF8B6F4
Первое изменение '== 1'' '0'. – kezi
НЕТ, я не думаю, что он зашифрован, а хэширован и поэтому не может быть расшифрован. – Rahul
Можете ли вы проверить, существует ли запись для этого письма? – kezi