【问题标题】:Why doesn't this php site work (password-hash)为什么这个 php 站点不起作用(密码哈希)
【发布时间】:2017-08-22 14:27:43
【问题描述】:

我正在尝试在 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>";
    }

}
?>

你能帮帮我吗?
谢谢

【问题讨论】:

  • What 不起作用?
  • if 语句查找 $_GET 而您 $_POST 表单
  • @SuperDJ action 负责处理。
  • 执行在哪里停止?
  • 也许您可以尝试强制 PHP 显示错误:error_reporting( E_ALL ); ini_set( 'display_errors', '1' ); 将其设置在文件顶部

标签: php html pdo


【解决方案1】:

功能:

password_verify()

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

password_hash()

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多