假设用户忘记了密码并且他想知道他的密码。他必须为他的安全问题提供答案。在提供正确答案后,我希望php向用户的电子邮件地址发送电子邮件并显示其密码。
那么,我应该在php中做什么邮件配置,以便它与各个用户的许多电子邮件地址进行交互?
好吧,这是我的php.ini文件,我有什么变化?我在windows 7 ultimate中使用wamp 2.0。
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
;sendmail_from = me@example.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =
答案 0 :(得分:3)
您不想要以明文形式存储密码,您应该对其进行哈希处理。
您可以做的是向忘记密码的人发送一次性密钥链接,以便他们更改密码。
您可以使用mail()发送邮件。
至于配置邮件服务器:如果您没有在网络服务器上运行,请尝试使用ISP的SMTP服务器。
答案 1 :(得分:2)
你做错了!不要 EVER 以可恢复的格式(纯文本或加密格式)存储密码。
答案 2 :(得分:2)
不,不要发给他密码。只需生成一个新的并且不要以普通格式存储密码
答案 3 :(得分:2)
从PHP发送电子邮件的最基本方式是使用mail
函数(http://php.net/manual/en/function.mail.php),因此在他们请求电子邮件时向他们发送电子邮件就像调用mail($user_email, 'Reset Password', 'Visit '.$reset_url.' to reset your password');
一样简单
但是,正如每个人都已发布的那样,以可以检索的方式存储密码是一个非常的错误主意。您需要做的是存储密码的哈希值(请参阅this tutorial,了解如何设置密码 - 这是一个非常重要的概念)。完成设置后,您需要让用户请求重置密码,并让系统生成唯一代码来对其进行身份验证,在电子邮件中将代码发送给他们,并让他们使用该代码设置新密码。他们或其他任何人,一旦存储了密码,就永远不能恢复密码。
答案 4 :(得分:1)
不要以纯文本格式存储用户密码。这是一个非常糟糕的做法。
正确的方法是哈希和盐密码,例如: G。通过hash_hmac
函数:
hash_hmac('sha256', $password, $salt);
Salt可以是特定用户特有的任何内容,例如他的电子邮件地址。
登录时,您可以通过散列输入的密码来检查输入凭据的有效性,方法与创建(注册)新用户时相同,然后将哈希值与数据库中的哈希值进行比较。
“我忘记密码”功能的最佳做法是生成您通过电子邮件发送给用户的一次性链接。访问该链接后,他可以设置他的新密码。在那之前,他的旧密码仍然有效。这可以防止攻击者在他们不知道的情况下重置应用程序的所有用户的密码。
答案 5 :(得分:1)
存储或发送普通密码总是错误的。我同意您必须发送包含忘记密码链接的电子邮件。但我相信你的问题主要是关于如何发送电子邮件。 PHP Mail功能很棒。但是你可以使用像swift这样的第三方库。