【发布时间】:2019-05-19 10:09:11
【问题描述】:
我的项目的登录检查/密码验证代码有问题。我已经实现了代码来搜索数据库以查找数据(用户名/密码),但我想验证该数据,并且由于散列,我认为 PHP 找不到数据。
代码放在下面,任何方法和建议将不胜感激
h2>Administrator Login</h2>
<form action="adminportal.php" method="post">
<label>Username</label> <input type="text" name="adminun"/>
<label>Password</label> <input type="password" name="adminpw"/>
<input type="submit" name="submit" value="Submit" />
</form>
<?php
if (isset($_POST['submit'])) {
$stmt = $pdo->prepare('SELECT * FROM admin WHERE username = :username AND password = :password');
$values = [
'username' => $_POST['adminun'],
'password' => sha1($_POST['adminun'] . $_POST['adminpw'])
];
$stmt->execute($values);
$user = $stmt->fetch();
if (password_verify($_POST['adminpw'], $user['password'])) {
$_SESSION['loggedin'] = $user['id'];
}
else {
echo 'Sorry, your account could not be found';
}
}
?>
【问题讨论】:
-
你正在使用的东西永远不会起作用。不要混合散列函数,不要连接 POST 数组。
-
你的密码没有加盐,从数据库获得的不是输入值
标签: php html mysql passwords mysql-workbench