我无法使用PHP 5.5输入密码以匹配散列密码

时间:2015-08-14 20:03:17

标签: php mysqli php-password-hash

这个问题被认为是重复的,我不相信它是因为我找不到任何适合我的解决方案;但是回答的是关于错误发布 - 这个问题与代码语法错误没有任何关系;简单地说:如何获得存储的哈希密码以匹配登录屏幕上输入的密码?

我使用的是PHP 5.5.9,这是我的数据库信息:

Apache / 2.4.7(Ubuntu) 数据库客户端版本:libmysql - mysqlnd 5.0.11-dev - 20120503 - $ Id:bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $

服务器类型:MySQL 服务器版本:5.5.44-0ubuntu0.14.04.1 - (Ubuntu)

PHP扩展:MySQLi

我开始说我甚至不是一个初学者(甚至不是一个nOOb,而是我从MySQLi开始。我知道PDO,但这是我和我的骨架形式#39;我现在正在使用登录屏幕,这是我失去越来越多头发的日子。

以下任何提示将非常非常感谢,并提前感谢您。

我无法获取匹配的密码(使用此代码将用户插入数据库:--->)

    $password = $_POST['password'];
    $hash = password_hash($password, PASSWORD_DEFAULT);

将$ hash值插入到数据库中,并且在phpMyAdmin上看起来很好。然后是基本的,基本的登录屏幕,要求提供凭据,我总是得到密码不匹配'失败:

    <?php

    require_once 'scripts/app_config.php';
    require_once 'scripts/database_connection_tbt.php';

        $username = mysqli_real_escape_string($db, trim($_REQUEST['username']));
        $password = $_POST['password'];

        // Look up the user

        $query = sprintf("SELECT user_id, username, password FROM pax " .
                         "WHERE username = '%s' ", 
                         $username);

          $result = mysqli_query($db, $query);
          $row = mysqli_fetch_assoc($result);

          if ($row) {
              $hash = $row['password'];
              if (password_verify($password, $hash)) {
                  echo "<br><br>Password match <br><br>";
              } else {
                  echo "<br><br>Password doesn't match<br><br>";
              }
          }

    ?>

    <html>
        <body>
            <form action="" method="POST">
            <label for="username" id="username">Username:</label>
                <input type="text" name="username"><br><br>
            <label for="password" id="password">Password:</label>
            <input type="password" name="password"><br><br>
            <input type="submit" value="Please God, please.">
            </form>    
        </body>  
    </html>

0 个答案:

没有答案