Форма входа в PHP — База данных MySQL — Неверный пароль

Я пытаюсь войти в систему с этим кодом, однако я всегда получаю отрицательный результат при попытке ($ errorMessage). Я пытаюсь проверить имя пользователя и пароль к существующей базе данных ванильные форумы. Я получил пользователя только с SELECT (чтение) доступ к конкретной таблице.
Я не понимаю, что именно делает эта строка:

подготовить («ВЫБЕРИТЕ * ИЗ GDN_User ГДЕ Email =: Email»)

У меня есть эти строки в моей базе данных:

Идентификатор пользователя, электронная почта, пароль, (имя) (и более несоответствующие)

<?php
//username-, password-vars (etc.) removed for stackoverflow post
//LOGIN START
session_start();
$pdo = new PDO('mysql:host=localhost;dbname=vanilla_forums', $username2, $password);
if(isset($_GET['Login'])) {
$email = $_POST['Email'];
$passwort = $_POST['Passwort'];

$statement = $pdo->prepare("SELECT * FROM GDN_User WHERE Email = :Email");
$result = $statement->execute(array('Email' => $email));
$user = $statement->fetch();

//Überprüfung des Passworts
if ($user !== false && password_verify($passwort, $user['Passwort'])) {
$_SESSION['UserID'] = $user['UserID'];
die('Login erfolgreich. Weiter zu <a href="access.php">internen Bereich</a>');
} else {
$errorMessage = "Password invalid.<br>";
}
}

//LOGIN END
?>
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>

<?php
if(isset($errorMessage)) {
echo $errorMessage;
}
?>

<form action="?Login=1" method="post">
E-Mail:<br>
<input type="email" size="40" maxlength="250" name="Email"><br><br>

Dein Passwort:<br>
<input type="password" size="40"  maxlength="250" name="Passwort"><br>

<input type="submit" value="Abschicken">
</form>
</body>
</html>

Вполне возможно, что я просто что-то не так сделал с заглавными буквами, но не могу найти проблему.

0

Решение

Если ваша колонка базы данных называется Password, это не даст результата: $user['Passwort'],

Я согласен с вашим комментарием: придерживайтесь английского. 🙂

1

Другие решения

вам просто нужно добавить ‘:’ в execute() функция электронной почты.

изменилось с:

    $result = $statement->execute(array('Email' => $email));
$user=$statement->fetch();

Для того, чтобы:

  $result = $statement->execute(array(':Email' => $email));
$user=$statement->fetch(PDO::FETCH_ASSOC);
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector