CodeIgniter:登录密码匹配

时间:2013-08-27 03:00:25

标签: php codeigniter encryption passwords

我很想知道使用CodeIgniter登录的好方法。

我目前正在尝试以下方法: - 从登录表单中获取用户的电子邮件和密码 - 加密该密码,并将其与数据库中的密码进行比较。

然而它返回false。我相信这是因为加密方法每次都会创建一个新的加密密码。

我相信这是一件好事,但我能看到登录的唯一方式如下:

  • 当用户提交表单进行登录时,表单已经过验证
  • 数据库中具有匹配用户名(或电子邮件地址)的用户将被提取并存储在变量中。
  • 然后解密出来的密码并与尝试登录的用户进行比较

我对此感到不舒服,因为它要求我在变量中存储未加密的密码,这可能需要一个好的黑客才能知道用户的电子邮件地址。

建议?

2 个答案:

答案 0 :(得分:0)

当用户注册时,您可以存储密码&通过使用php crypt即crypt($ password,$ salt),其中$ password是用户输入的密码& $ salt是随机字符串。 现在,在登录时

  1. 当用户提交表单进行登录时,表单已经过验证
  2. 提取具有匹配用户名(或电子邮件地址)的数据库中的用户。
  3. 拔出的密码是$ hashed_pa​​ssword&用户输入$密码然后比较

    if (crypt($password, $hashed_password) == $hashed_password) 
    {
    //successful login
    }else{
    //Invalid username/password
    }
    

答案 1 :(得分:0)

您还可以使用

使用form_validation规则
$this -> form_validation -> set_rules('passconf', 'Re-enter', 'required|matches[password]');
#the rules set as the 3rd parameter of the set_rules function have matches