如何在登录页面中检查加密密码?

时间:2013-08-20 06:09:40

标签: php encryption crypt

我用crypt()函数加密了我的密码。 当用户想要登录时,我如何检查存储在数据库中的密码?

Ex的

$pass = "fgyi34".$pass."@1187Gh";

$hashed_password = crypt($pass);

4 个答案:

答案 0 :(得分:0)

对于新用户。
crypt密码并将其存储在数据库中。

对于现有用户
crypt密码并在用户单击提交按钮时将其存储在变量中,将加密密码与数据库中较早的加密密码进行比较。如果密码不匹配,则向用户显示密码错误的消息。

答案 1 :(得分:0)

在注册时将$ hashed_pa​​ssword存储到数据库中。

登录时,使用mysql查询中的存储密码检查加密密码

答案 2 :(得分:0)

加密密码无法撤消,请按照以下步骤进行密码加密:

1)生成一个随机数并对其进行加密。 2)加密后保存在数据库列字段中。 3)在登录时,交叉检查输入的密码并再次加密。 4)使用哈希密码检查这个新密码。

答案 3 :(得分:0)

请阅读Manual

  

用于基于散列的可选盐串。如果没有提供,   行为是由算法实现定义的,可以导致   意外结果

示例#1

<?php
  $hashed_password  = crypt( 'mypassword' ); // let the salt be automatically generated

  /*
    You should pass the entire results of crypt() as the salt for comparing a
    password, to avoid problems when different hashing algorithms are used. (As
    it says above, standard DES-based password hashing uses a 2-character salt,
    but MD5-based hashing uses 12.)
  */
  if ( crypt( $user_input, $hashed_password ) == $hashed_password ) {
    echo "Password verified!";
  }
?>

因此,每当用户尝试登录时,请使用password从数据库中获取加密的username,并将user inputhashed passwordcrypt进行比较。

示例#2

<?php
  $username = $_POST["username"];
  $password = $_POST["password"];

  $passhash = "SELECT `password` FROM `table` WHERE `username` = '{$username}'";
  // execute the query and get the hashed password

  if ( $passhash ) {
    if ( crypt( $password, $passhash ) == $passhash ) {
      echo "Password verified!";
    }
  }
?>