我尽量解释…
在我的项目开始时,我只是以纯文本格式存储密码,现在在将其上传到服务器之前,我想用MD5散列它们,当用户登录时,他像以前一样使用简单的密码..
只是它们应该在数据库中散列。
我该怎么做,不改变很多在编码和登录脚本?
以及如何添加记住密码功能和忘记密码功能到简单的登录页面?任何链接,可以解决我的问题。
我在PHP和sql工作。
关于MD5问题:
UPDATE users SET password = MD5(password)
在验证用户凭据的登录脚本中,只需添加MD5函数即可:
SELECT id FROM users WHERE login = :login AND password = MD5(:password)
关于密码丢失功能的第二个问题在SO上有广泛的覆盖。
第一期运行这个查询
UPDATE urusertable SET password=md5(password);
和你的第二期当用户勾选"保持我登录"复选框时检查它,然后在你想要的时间设置一个cookie,
if(isset($_POST['remember'])){
setCookie('rememberhim','whateverurvalue',time()+3600*7);
}
则每次用户访问您的网站时检查cookie。如果你只是想自动填充登录字段,也存储用户名和密码在一个cookie,但这是一个非常糟糕的做法,自动填充。
PHP有一个MD5函数(你可能知道):
$password = mysql_result(mysql_query(SELECT `password` from `users`), 1);
$password = md5($password);
mysql_query(UPDATE `users` set `password` = '$password');
(显然,您需要调整上述代码以配合您的数据库结构)
如果你的数据库使用PHPMYADMIN,还有一个内置的MD5函数,理论上你可以使用它来一次更新所有的表。