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

use*_*974 2 php email yii

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

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

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

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

WAS*_*tch 7

听起来你需要在每封电子邮件发送后以某种方式存储数据,并使用唯一的哈希值.在电子邮件中,您在URL查询中使用唯一哈希.

然后在该页面上,您将使用该哈希来调用从该电子邮件中存储的信息,因为我们可以说是讨论小组或其他内容.

可以生成一个简单但有效的令牌,如下所示:

$token = substr( md5( microtime() ), -12 );
Run Code Online (Sandbox Code Playgroud)

您还可以使用用户电子邮件生成UNIQUE但向后兼容的哈希.(这是不安全的!)

$token = base64_encode ( $email ); // The users email will be encoded
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用该代码在数据库中解码和搜索该电子邮件

$emailToken = base64_decode( $_GET['t'] ); // Contains the users email
Run Code Online (Sandbox Code Playgroud)

您可以测试以查看这是否是一个有效的令牌,以使其对基本注入安全,如下所示:

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
    }
}
Run Code Online (Sandbox Code Playgroud)