我希望网站的某个方面可以用来注册简报。
我不是100%完成这项任务的最佳方式。
我能想到的很简单:
一个带有提交按钮的输入,用户在那里输入他们的电子邮件地址。
生成一个随机的32个字符的哈希值,并将它们的地址与mysql表一起存储。
电子邮件被发送到包含哈希的地址,并要求用户在一个页面上输入他们的电子邮件地址和哈希值,并将其与mysql表进行核对。
如果正确,则通过在表格上定义附加条目来激活电子邮件。
就我对这两个人的了解而言,这就是我...
我想要完成的是,在确认中向用户发送一个链接,他们可以点击该链接确认他们的地址......类似http://www.mysite.com/users/newsletter/?user=aGuy&confirm=blahBlah
。
但是我真的不知道从哪里开始......就像我理解的那样,以这种方式允许mysql查询是不安全的......
有人能够向我提供有关此事的更多信息吗?
这是建议或链接到教程,可能涵盖这样的事情。
感谢您抽出宝贵时间阅读本文!!
答案 0 :(得分:3)
你很亲密。
当用户提交其电子邮件地址时,请将其插入数据库。该表至少应包含4个字段(id,email,Verified,key)。 id
只是一个代理键(自动增量)。 verified
应默认为false,并且密钥不应该是散列,而是随机生成的字符串 - 任何难以猜测的内容。哈希是确定性的,因此如果有人想出你正在使用的算法,那么使用md5对用户的电子邮件地址进行哈希处理将不会成为一个好的密钥。随机元素更适合,但同样,任何难以猜测的东西都可以正常使用。
电子邮件应包含一个包含id
和key
的链接。您使用id
在DB中查找记录(因为它是唯一的),然后检查URL中的key
是否与数据库中存储的匹配(键不必是唯一的) )。如果匹配,请将verified
设置为true,然后瞧。
对于奖励积分,您可以存储验证电子邮件发送的日期,并且您可以在24小时后删除未经验证的电子邮件。
答案 1 :(得分:1)
您对流程的描述很好,只需开始实施。
sfGuard包实现了类似的流程,检查它们的源代码和数据库设计。