我很好奇用CodeIgniter登录的好方法。
我目前正在尝试以下操作:-从登录表单中获取用户的电子邮件和密码-加密该密码,并将其与数据库中的密码进行比较。
但是它返回false。我相信这是因为加密方法每次都会创建一个新的加密密码。
我相信这是一件好事,但我能看到的唯一其他登录方式如下:
- 当用户提交表单进行登录时,表单将被验证
- 数据库中具有匹配用户名(或电子邮件地址)的用户将被提取并存储在变量中
- 提取的密码随后被解密,并与试图登录的用户进行比较
我对此感到不舒服,因为它要求我将未加密的密码存储在一个变量中,这可能需要一个优秀的黑客只知道用户的电子邮件地址。
建议?
当用户注册时,您可以存储密码&它是salt通过使用php crypt,即crypt($password,$salt),其中$password是用户输入的密码&salt是随机字符串。现在,在登录时
- 当用户提交表单进行登录时,表单将被验证
- 数据库中具有匹配用户名(或电子邮件地址)的用户将被提取
-
取出的密码被放入$hashed_password&用户输入$密码,然后比较
if (crypt($password, $hashed_password) == $hashed_password) { //successful login }else{ //Invalid username/password }
您还可以使用使用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