ログインコードが正常に動作するように苦労しています。正しいユーザー名とパスワードが入力されているにもかかわらず、「ユーザー名またはパスワードが間違っています」というセクションが表示され続けます。私はどこかで何かを逃していますか、助けてください。あなたはハッシュ化された に対して入力されたパスワードをpassword_verifyことができるように、 *ユーザー作成の時点でパスワードのハッシュ化されたコピーを保存する必要があるかもしれません*PHP PDOログインコード - エラーを繰り返し、ログインできません[正しいユーザ名とパスワードが入力されました]
<?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;
}
?>
、最初だけで、彼らはあなたがそれらをここで – Swellar
を返すように期待しているものを戻ってきていることを確認するために、 '数($ログイン)'と 'password_verfiy'によって返された値をチェックして、適切にそれを行う方法です。 [PDOとpassword_verify()を使用してユーザーを認証する](https://phpdelusions.net/pdo_examples/password_hash)あなたは意味をなさないSQLにパスワードを追加しています。 –
その無意味なW3Sの 'checkData'ガベージ機能の使用を止めてください。 – deceze