为每个电子邮件ID生成唯一链接:Yii

时间:2014-04-07 05:09:14

标签: php email yii

我有一个Yii网络应用,用户可以发送大量电子邮件。在这封邮件中,我想向每个电子邮件ID发送一个唯一的链接。我对如何做到这一点并不太了解。

我应该从哪里开始实现这个目标?

1)。如何为每个电子邮件ID自动生成唯一链接。

2)。如果用户点击链接,如何跟踪响应?

1 个答案:

答案 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
    }
}