如何在电子邮件中创建自己的“取消订阅”按钮?

时间:2016-10-27 15:32:44

标签: php html laravel 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');

然后我可以使用名称和时间戳查询我的数据库,并使用中提琴,删除。

但有人可以轻松编辑网址中的名称或时间戳,对吗?

这让我想要使用POST,但我不完全确定在这种情况下我应该怎么做。我可以创建一个表单,将一些输入设置为隐藏,然后将名称和时间戳存储到这些输入值中。我还没有尝试过,因为它听起来很漂亮。 在这种情况下使用会话也行不通,对吧? 这是使用cookies的好时机吗?或者我应该使用某种键?

1 个答案:

答案 0 :(得分:4)

  

但有人可以轻松编辑网址中的名称或时间戳,对吗?

  

这让我想要使用POST

这没有用。您仍将完全依赖客户控制下的数据。

生成随机字母数字字符串以使用标识符。使用有关订阅用户的其余数据将其存储在数据库中。将其包含在网址中。

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