关于PHP参数化查询和密码_hash的

时间:2017-02-01 13:32:17

标签: php mysql

我是PHP的新手。我使用sha-1在我的数据库中存储密码,我只检查存储的sha-1和用户插入的密码计算的sha-1。现在我尝试使用password_hash()和password_verify()。

我对我的代码有疑问:

  $user = htmlspecialchars($_POST["username"]);
  $passw = password_hash($_POST["password"], PASSWORD_DEFAULT);

  if ($stmt = $conn->prepare("
                                SELECT Password
                                FROM Users
                                WHERE Username = ?
                                LIMIT 1
                            ")) {

      $stmt->bind_param("s", $user);

      $stmt->execute();

      $stmt->bind_result($passwDB);

      $stmt->fetch();

      if( password_verify($passwDB,$passw) ){

          if(!isset($_SESSION['login'])){
            session_start();
          }

          $_SESSION['login'] = $user;    
      }

      $stmt->close();
  }

    $conn->close();

这段代码对吗?目前我的数据库(sql)中的密码没有被散列。是否有最佳实践可以遵循?

Ps:在这种情况下,htmlspecialchars()是否有用?

谢谢(对不起我的英文!)

0 个答案:

没有答案