在我的登录PHP文件中,我有这些
$passwordInput = password_hash($passInput, PASSWORD_BCRYPT);
$passwordVerify = password_verify($userInput, $passwordInput);
Run Code Online (Sandbox Code Playgroud)
在我的Register PHP文件中,我有这个.
$passwordSign = password_hash($passSign, PASSWORD_BCRYPT);
Run Code Online (Sandbox Code Playgroud)
现在,基本上我是这样做的,它哈希密码并在注册时将自己插入数据库.它做了什么.
但是,它无法验证它.两个结果都给出了两个不同的哈希,我不知道我可能做错了什么.我也试过让它再次哈希输入并检查数据库中的password_hash,但这不起作用..
使用这些的正确方法是什么?
(另外,$ passSign和$ userInput是输入字段,它确实获得用户名/密码)
axi*_*iac 12
在注册时,您将从用户输入中获取密码并生成其使用的密码password_hash():
$hash = password_hash($_POST['password'], PASSWORD_BCRYPT);
Run Code Online (Sandbox Code Playgroud)
您可以在第三个参数中为其提供自定义salt,但文档建议不要这样做:
注意强烈建议您不要为此功能生成自己的盐.如果您没有指定,它将自动为您创建安全盐.
您将此哈希保存在数据库中.确保将其放在字符CHAR/ VARCHAR字段中60或更长时间.
当用户想要登录时,使用以下方法检查他们输入的密码,该密码是先前保存的哈希password_verify():
$auth = password_verify($_POST['password'], $hash);
Run Code Online (Sandbox Code Playgroud)
当然,您$hash从数据库中获取正确的值,通过提供的用户名进行搜索.
如果$auth是,TRUE则提供的密码与其在注册上计算的哈希匹配,并且用户被认证.