Fat*_*rri 6 php newsletter subscription unsubscribe
我想用php写一份时事通讯.但我有一个问题:如何生成取消订阅的代码.实际上,我想为每个订户提供唯一的代码.例如在' http://net.tutsplus.com/ '中你可以看到类似这样的内容:' http://tutsplus.us1.list-manage.com/profile?u = 0154weg635df2fdwied2541cbed & id = c5652sdfre7&e = 8758563dfgde '.另一个问题是这个代码应该保存在数据库中还是没有?(因为我认为如果它对每个人来说都是唯一的,那么每次发送新闻简报时都没有必要生成).任何的想法?
Ond*_*žka 18
生成用户id +一些秘密字符串的散列,将id和散列放入链接,并在验证散列后使用将取消订阅用户的脚本来提供它.
哈希不必在数据库中,只需动态计算即可.
创建取消订阅链接的脚本:
<?
$link = "unsubscribe.php?id=$user['id']&validation_hash=".md5($user['id'].$SECRET_STRING)
<a href="<?=$link?>">Unsubscribe</a>
Run Code Online (Sandbox Code Playgroud)
处理取消订阅链接的脚本:
function unsubscribe() {
$expected = md5( $user['id'] . $SECRET_STRING );
if( $_GET['validation_hash'] != $expected )
throw new Exception("Validation failed.");
sql("UPDATE users SET wants_newsletter = FALSE WHERE id = " . escape($_GET['id']);
}
Run Code Online (Sandbox Code Playgroud)
它不是最安全的东西,但足够好.