这实际上是我第一次尝试PDO和password_verify函数。我已经阅读了一些文章,并开始使用一个非常基本的登录表单,没有任何密码哈希。只是为了开始理解基础知识,但没有运气。
可能是我周二早上,但我似乎无法找到错误。我希望你们能指出我正确的方向。 任何帮助将不胜感激。
编辑:忘记错误。我得到“失败”,所以我认为它在password_verify函数中的某个地方。
这是我的代码:
<form method="post" action="">
<input type="text" name="username" value="" />
<input type="password" name="password" value="" />
<input type="submit" name="login" value="Inloggen" />
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if(!empty($_POST['username']) && $_POST['password']) {
$username = trim($_POST['username']);
$password = trim($_POST['password']);
try {
$host = 'localhost';
$db = 'pdotest';
$user = 'root';
$pass = '';
$charset = 'utf8';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);
$stmt = $pdo->prepare('SELECT username, password FROM users WHERE username = :username');
$stmt->execute(array(':username' => $username));
$user = $stmt->fetch();
if($stmt->rowCount() > 0)
{
if(password_verify($password, $user['password']))
{
echo "Succesfully logged in!";
}
else
{
echo "Fail";
}
}
}
catch (PDOException $e) {
$message = $e->getMessage();
}
}
}
?>
</form>