通过邮件验证新用户?

时间:2017-04-01 15:41:15

标签: php mysql email

所以我在phpmyadmin的数据库中有一个用户表用于网站。此users表具有自动递增的id,mail,firstname,lastname,hash(用于密码)和authentication_state。我希望能够向包含链接的新用户发送邮件,并且该链接使authentication_state从0(默认值)变为1,其中他经过身份验证。我该怎么做呢?

提前致谢。

2 个答案:

答案 0 :(得分:0)

在您发送的邮件中,只需在链接中包含用户ID,用于返回您的站点进行身份验证。或者您可以创建一些random string而不是使用用户ID进行安全性,并在链接中将此字符串发送给它们。您可以为这些身份验证字符串创建单独的表,一旦用户对其帐户进行身份验证,请将其删除,因为您不再需要它

然后当他们使用该链接访问您的身份验证页面时,将他们的authentication_state更新为1并从您的数据库中删除身份验证字符串的条目,以保持数据库的良好维护并离开只有你需要一次又一次的那些条目。

但请提供一些代码,以便我帮助您。

答案 1 :(得分:0)

<强>建议:

更好的设计是创建一个临时用户表,让我们调用它temp_users。每当用户在您的网站中注册时,数据将转到此表而不是实际的users表。用户单击发送到电子邮件地址的链接后,您可以将数据从temp_users表移动到users表。您可以每24小时左右运行一次调度程序,并删除48小时前注册但尚未验证的帐户。我个人觉得这是一个更好的实现。

现在回答您的实际问题:

在users表中再添加一列。让我们称之为hash_code。每当注册的新用户计算随机数字或字母系列时。时间戳上的MD5加密是您可以使用的一个示例。与实际用户数据一起将计算的哈希插入表中。然后向用户的电子邮件发送电子邮件,例如

 www.example.com/verify.php?hashcode=<The computed hash code here>&email=<email registered>

当用户点击链接时,他会进入verify.php页面。

verify.php中使用$ _GET从URL获取哈希码值和电子邮件值。现在在您的数据库上触发一个sql,例如,

SELECT COUNT(1) FROM users WHERE email=<VALUE FROM $_GET['email']> AND hash_code=<Value from $_GET['hashcode'];

如果SQL返回1,那么您可以在表上触发更新以将已验证标志变为true。如果您正在使用我在开头谈到的临时表,您将在临时表上执行选择并将这些值插入到永久表中。