0

我很好奇使用 CodeIgniter 登录的好方法。

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

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

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

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

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

建议?

4

2 回答 2

0

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

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

    if (crypt($password, $hashed_password) == $hashed_password) 
    {
    //successful login
    }else{
    //Invalid username/password
    }
    
于 2013-09-23T11:20:07.730 回答
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
于 2015-01-15T08:53:42.537 回答