我有一个Yii网络应用,用户可以发送大量电子邮件。在这封邮件中,我想向每个电子邮件ID发送一个唯一的链接。我对如何做到这一点并不太了解。
我应该从哪里开始实现这个目标?
1)。如何为每个电子邮件ID自动生成唯一链接。
2)。如果用户点击链接,如何跟踪响应?
答案 0 :(得分:7)
听起来您需要在每封电子邮件发送后以某种方式存储数据,并使用唯一的哈希值。在电子邮件中,您可以在URL查询中使用唯一哈希。
然后在该页面上,您可以使用该哈希来调用该电子邮件中存储的信息,例如讨论小组或其他内容。
可以像这样生成一个简单但有效的令牌:
$token = substr( md5( microtime() ), -12 );
您还可以使用用户电子邮件生成UNIQUE但向后兼容的哈希值。 (这是不安全的!)
$token = base64_encode ( $email ); // The users email will be encoded
然后,您可以使用该代码在数据库中解码和搜索该电子邮件
$emailToken = base64_decode( $_GET['t'] ); // Contains the users email
您可以测试一下这是否是一个有效的令牌,以确保其免受基本注入的影响,如下所示:
if ( base64_encode( base64_decode( $_GET['t'] ) ) === $_GET['t'] ) {
// Valid base64... we hope but is it a valid email?
$emailToken = filter_var( base64_decode( $_GET['t'] ), FILTER_SANITIZE_EMAIL );
if ( filter_var( $emailToken, FILTER_VALIDATE_EMAIL ) ) {
// Email is valid. Do something to call email info
}
}