【问题标题】:How do I fix my PHP password verify code?如何修复我的 PHP 密码验证码?
【发布时间】: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


【解决方案1】:

仅根据用户名进行选择,而不是密码。

$stmt = $pdo->prepare('SELECT * FROM admin WHERE username = :username');
$values = [
    'username' => $_POST['adminun'],
];
$stmt->execute($values);
$user = $stmt->fetch();

然后使用password_verify 将发布的密码与用户记录中的密码进行验证。

if (password_verify($_POST['adminpw'], $user['password'])) {
    $_SESSION['loggedin'] = $user['id'];
}
else {
    echo 'Sorry, your account could not be found';
}

这仅在存储在数据库中的密码使用password_hash 进行哈希处理时才有效。

【讨论】:

    【解决方案2】:

    我认为你的 sql 应该首先像这样选择基于用户名

    $stmt = $pdo->prepare('SELECT * FROM admin WHERE username = :username');
    $values = [
        'username' => $_POST['adminun'],
    ];
    $stmt->execute($values);
    $user = $stmt->fetch();
    

    然后使用password_verify()验证密码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多