我怎么做自己的“退订”呢?电子邮件中的按钮


How do I make my own "unsubscribe" button in an email?

我得到了一个控制器,它发送带有变量数组的电子邮件,其中包括人员的姓名和他们发出请求的时间戳。电子邮件发送一个html文件,在html文件中有一个"点击这里删除bla bla bla"行。当用户单击链接时,链接将把他们发送到控制器,控制器将从我的数据库中删除他们的名字。

现在,我不完全确定我应该怎么做。显然我可以这样做:

Click <a href='https://xxx.xx.xxx.xxx:8000/web/misc/request/delete/<?php echo $data['timestamp']; ?>/<?php echo $data['name']; ?>'> here</a> to delete bla bla bla.

然后,在我的路由文件中,我会有:

Route::get('/web/misc/request/delete/{time}/{name}', 'EmailController@deleteRequest');

然后我可以用名字和时间戳查询我的数据库,然后删除。

但是有人可以很容易地编辑URL中的名称或时间戳,对吗?

这使我想使用POST,但我不完全确定在这种情况下应该如何做到这一点。我可以创建一个表单,将一些输入设置为隐藏,然后将名称和时间戳存储到这些输入值中。我还没试过,因为它听起来很粗糙。在这种情况下,使用会话也不起作用,对吗?现在是使用饼干的好时机吗?或者我应该用钥匙之类的东西?

但是有人可以很容易地编辑URL中的名称或时间戳,对吗?

是的

这让我想使用POST

那没有用。你仍然完全依赖于客户端控制下的数据。


生成随机的字母数字字符串来使用标识符。将其与关于订阅用户的其他数据一起存储在数据库中。包含在URL中

当请求进入时,检查被取消订阅的电子邮件地址是否与数据库中的确认字符串匹配。