RSM*_*RSM 5 php mysql email activation
当用户使用php通过他们的电子邮件地址订阅我的简报时,我如何通过电子邮件向他们发送"激活链接"以确认它是他们的电子邮件地址而不是假的.
所以此刻我有
PHP:
<?php
$to = "recipient@example.com";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
if (mail($to, $subject, $body)) {
echo "<p>Message successfully sent!</p>";
} else {
echo "<p>Message delivery failed...</p>";
}
?>
Run Code Online (Sandbox Code Playgroud)
我想我会将$ body更改为:
$body = "Please click the link to activate your email \n
http://www.activationlink.com?";
Run Code Online (Sandbox Code Playgroud)
我如何做到这一点,如果用户点击该链接,它会将他们的详细信息添加到Mysql数据库,识别他们是合法的订阅者?
任何帮助或建议表示赞赏.谢谢
Pek*_*ica 11
我喜欢做的是:
在注册过程中生成唯一的随机ID
将ID与电子邮件地址,"已确认"字段(默认值:"no")以及数据库表中的任何其他数据一起存储
发送带有指向激活唯一ID的URL的电子邮件(例如, domain.com/activate.php?id=102939505595
激活页面检查唯一键是否存在并将confirmed字段更改为yes(1或其他).
此外,还可以选择保存确认日期/时间,IP地址和用户代理.
将用户插入到设置了"pending"标志的表中(或未设置"validated"标志).在更改标志之前,他们不应该做任何事情.如果你想要非常彻底,实际上将它们放入users_temp表中.生成完全随机的密钥并将其与用户ID相关联.您发送给他们的链接应该是http://yourwebsite.com/?activate=totallyrandomkeyigeneratedearlier.当您收到激活请求时,使用相应的随机密钥为用户打开有效标志.
不需要数据库.您可以发送由哈希签名的超链接中的所有数据
即使有效期,我最近也回答了类似的问题.
虽然它是用于密码恢复链接,但想法是一样的
$token = sha1($time.$email.$salt).dechex(time()).dechex($user_id);
$link = "http://".$domain."/restorepass/?token=$token";
Run Code Online (Sandbox Code Playgroud)
整个令牌看起来像单个十六进制数字,很难猜测它的含义.
接收后只需拆分并解码.
整洁,IMO.
| 归档时间: |
|
| 查看次数: |
9396 次 |
| 最近记录: |