生成用户标识的一些散列,一些秘密字符串,将id和散列放入链接,并在验证散列后使用将取消订阅用户的脚本来提供它.
哈希不必在数据库中,只需动态计算即可.
创建取消订阅链接的脚本:
$link = "unsubscribe.php?id=$user['id']&validation_hash=".md5($user['id'].$SECRET_STRING)
处理取消订阅链接的脚本:
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']);
}
它不是最安全的东西,但足够好.