Ich habe Schwierigkeiten, den Login-Code erfolgreich auszuführen. Es wird weiterhin der Abschnitt "Benutzername oder Passwort falsch ..." angezeigt, obwohl der richtige Benutzername und das richtige Passwort eingegeben wurden. Fehle ich irgendwo irgendwo, bitte hilf mir.PHP PDO Login-Code - wiederholt Fehler, Login nicht möglich [korrekter Benutzername und Passwort wird eingegeben]
<?php
//Check login details
session_start();
//get user input from the form
if (isset($_POST['Submit'])) {
$username = checkData($_POST['username']);
$password = checkData($_POST['password']);
require ('config.php'); //database connection
global $dbselect;
$qry = 'SELECT username, password
FROM users
WHERE username = :username AND password = :password
LIMIT 1';
$statement = $dbselect->prepare($qry);
$statement->bindValue(':username', $username);
$statement->bindValue(':password', $password);
$statement->execute();
$login = $statement->fetch(PDO::FETCH_ASSOC);
if (count($login) > 0 && password_verify($password, $login['password'])) {
$_SESSION['username'] = $login['username'];
header('location:home.html');
} else {
echo "Username or Password incorrect. Please try again.";
}
$statement->closeCursor();
}
//validate data
function checkData($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
Zum einen prüfen Sie zunächst die Werte von 'count ($ login) zurück' und 'password_verfiy' nur um sicher zu stellen, dass sie zurückkommen, was Sie ihnen erwarten zurückzukehren – Swellar
Hier ist, wie es richtig zu machen: [Authentifizieren eines Benutzers mit PDO und password_verify()] (https://phpdelusions.net/pdo_examples/password_hash). Sie fügen SQL das Passwort hinzu, das keinen Sinn ergibt. –
Hören Sie auf, diese unsinnige W3S-checkData-Funktion zu verwenden. – deceze