向用户发送激活电子邮件

时间:2010-01-06 22:19:31

标签: php activation

我该如何检查电子邮件是否存在? 无法理解网站如何使用用户点击的唯一链接发送邮件以验证他是电子邮件的所有者= /

创建一个名为activationkey的2个新列并激活并存储一些随机字符串,发送带有激活密钥的电子邮件,并更新与激活链接匹配的激活用户= 1

register.php?a=activate&key=9cdfb439c7876e703e307864c9167a15

有更好的想法吗?

3 个答案:

答案 0 :(得分:16)

我通常会发送一个包含userid和激活密钥的链接。当他们访问我的激活脚本时,如果找到匹配项,我会激活它们。

当他们注册时,我将生成大概32个字符的大写/小写字母数字字符并将其设置为激活密钥。此时,您可以创建一个名为“已激活”的字段,或者您可以假设用户在拥有激活密钥时未激活。

uid |        email       | key
------------------------------------------------------------
001 | j.smith@mysite.com | e09141f3f5a17fed6222fc0279b9afdf
------------------------------------------------------------
002 | mary.tyler@abc.com | 
------------------------------------------------------------

当用户访问激活脚本时,只需检查提供的密钥以及提供的ID,如果找到匹配项,则从文件中的用户记录中删除密钥(或更新您的布尔“激活”字段)并打开门。

如果提供的电子邮件地址不存在,则不会丢失。在一个月不活动后,您可以使用键定期删除所有行。

答案 1 :(得分:2)

激活密钥的一种替代方法是将生成的密码发送到用户电子邮件,如果用户登录,则激活(当然,应该能够将密码更改为他喜欢的密码)。

答案 2 :(得分:0)

没有简单的方法来检查电子邮件是否以编程方式实际存在。有一些方法(ping邮件服务器等)但没有一种方法被证明适用于每个邮件服务器的设置。强制用户通过您描述的链接激活他们的帐户是最好的方法。此外,您可能希望使用某种重复脚本​​,例如cron-job,在一段时间后删除未激活的成员(这将需要表中的另一列,时间戳)。

这很有用,因为如果用户注册但从未激活他们的帐户并删除电子邮件,并且您使用他们的电子邮件作为ID(仅作为示例),他们将永远无法完成激活。或者,如果他们尝试登录,您只需再次将激活电子邮件重新发送到该地址即可。

请确保在电子邮件中指定所有标题(回复,来自等),这样您的电子邮件就不会被标记为垃圾邮件。