为什么这个php网站不起作用(密码哈希)

时间:2017-08-22 14:27:44

标签: php html pdo

我正在尝试在php中登录网站,但我找不到错误。 虽然我没有得到错误,但它不起作用。
数据库连接工作(我试过)。

所以在HTML中我有一个带有两个输入标签和一个提交按钮的表单:

    <form action="?login=1" method="post">
            <input class="form-control" type="text" name="username" required="" placeholder="Name" border-radius="3px" />
            <input class="form-control" type="password" name="password" required="" placeholder="Password" border-radius="3px" font-size="caption" />
            <input text-align="center" type="submit" value="Login »"  class="btn btn-white-outline display-4" style="border-radius: 3px !important;">
    </form>

这是php代码:

<?php 
session_start();
$pdo = new PDO('mysql:host=localhost; dbname=test_db', 'user', 'password');

if(isset($_GET['login'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];

    $statement = $pdo->prepare("SELECT * FROM users WHERE username= :username");
    $result = $statement->execute(array('username' => $username));
    $user = $statement->fetch();

    if ($user !== false && password_verify($password, $user['password'])) {
        $_SESSION['name'] = $user['name'];

        die('<meta http-equiv="refresh" content="0; URL=/plan.php">');
    } else {
        $errorMessage = "<p style='color:red;'>
        Incorrect username or password.
        </p><br>";
    }

}
?>
你能帮我吗?
谢谢

1 个答案:

答案 0 :(得分:3)

功能:

password_verify()

期望第二个参数是函数创建的密码的哈希值:

password_hash()

或者将密码作为哈希存储在数据库中。