实现取消订阅功能的正确方法

Proper way to implement unsubscribe function

我目前正在使用 PHPMailer 向邮寄列表发送电子邮件,但是我希望创建一个取消订阅功能,因为凭良心我不能不提供该选项。

我面临的唯一问题是以安全的方式进行。到目前为止,我的想法是将 href 添加回我的网站,将 link 添加到 http://example.com/unsubscribe.php?email=useremail@test.com 之类的页面,但使用此方法任何人都可以删除他们想要的任何电子邮件,或删除整个邮件列表。我不确定如何绕过这个问题。我的 MySQL 数据库只包含一个唯一的电子邮件 ID,这只是他们在数据库中的位置(添加的第一封电子邮件的 ID 为 1,第二封电子邮件的 ID 为 2,依此类推)和电子邮件地址本身的列.

我会做这样的事情

http://example.com/unsubscribe.php?email=useremail@test.com&token=XXXXXXXXXXXXXXX

$_GET["token"] = hash_hmac('sha256', $email.$email_id, $site_salt);

如果令牌有效则处理订阅。

P.S。我不确定为什么我猜你会投反对票是因为你没有意识到法律要求你提供退订。