如何在php中发送带有密码详细信息的电子邮件


How to send an email with password details in php?

假设一个用户忘记了他的密码,他想知道他的密码。他必须回答他的安全问题。在提供正确的答案后,我希望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 =

希望以明文形式存储密码,您应该散列它们。

你能做的就是给忘记密码的人发送一个带有一次性密钥的链接,他们可以用它来更改密码。

你可以用mail()发送邮件。

至于配置你的邮件服务器:你可以尝试使用你的ISP的SMTP服务器,如果你没有在你的web服务器上运行一个。

NO

你做错了!不要永远以可恢复的格式存储密码,无论是纯文本还是加密。

不,别把密码发给他。只需生成一个新的和甚至不存储纯格式的密码

从PHP发送电子邮件的最基本方法是使用mail函数(http://php.net/manual/en/function.mail.php),所以当他们请求时发送电子邮件就像调用mail($user_email, 'Reset Password', 'Visit '.$reset_url.' to reset your password');一样简单

然而,正如每个人都已经发布的那样,以一种可以检索的方式存储密码是一个非常坏主意。您需要做的是存储密码的散列(请参阅本教程,了解如何设置该散列—这是一个非常重要的概念)。设置完成后,您需要用户请求重置密码,并让系统生成唯一的代码来验证他们,将该代码通过电子邮件发送给他们,并让他们使用该代码设置新密码。一旦您存储了密码的哈希值,他们或其他任何人都不应该能够恢复他们的密码。

请勿以明文形式存储用户密码。这是一个非常糟糕的做法。

正确的方法是散列和盐密码,例如通过hash_hmac函数:

hash_hmac('sha256', $password, $salt);

Salt可以是特定于特定用户的任何内容,例如他的电子邮件地址。

在登录时,您可以通过与创建(注册)新用户时相同的方式对输入的密码进行哈希来检查输入凭据的有效性,然后将哈希值与数据库中的哈希值进行比较。

"我忘记了我的密码"功能的最佳实践是生成一个一次性链接,通过电子邮件发送给用户。访问链接后,他可以设置自己的新密码。在那之前,他的旧密码仍然有效。这可以防止攻击者在不知情的情况下重置应用程序所有用户的密码。

存储或发送纯密码总是错误的。我同意你必须发送一封包含忘记密码链接的电子邮件。但我相信你的问题主要是关于如何发送电子邮件。PHP邮件功能很棒。但是你可以使用第三方库,比如swift.