首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过电子邮件发送包含帖子数据的链接

通过电子邮件发送包含帖子数据的链接
EN

Stack Overflow用户
提问于 2014-06-25 04:04:49
回答 1查看 76关注 0票数 0

我想知道如何在包含$_POST数据的电子邮件中发送链接。它是为php中的电子邮件重置功能准备的。我真的不想发送带有如下链接的电子邮件

代码语言:javascript
运行
复制
    http://example.reset.com/reset.php?token=5e51b695b8260632e55cad464039c2b4d7ec2cbca0331b881fabc4ada71cffac3808aa105ec5e9a9b693768774ddb6c3160359f9195c2e442c7c7a82ed849033

那么,实现这一点是可能的吗?

我已经检查了令牌是否在数据库中,以及$exp_date_time信息是否太旧。在收到邮件后,用户只有30分钟来更改他的密码。如果这些步骤之一不起作用,尝试连接到reset.php的人将被重定向到index.php

现在我不想有一个机器人意外地得到了肯定的回应。

对于信息,令牌长度为128,由使用修改后的sha512散列生成的随机密码生成。

我怎么才能让它更安全呢?

干杯

斯文

其他信息:

我的数据库:

代码语言:javascript
运行
复制
CREATE TABLE IF NOT EXISTS `email` (
  `kasuser` varchar(12) NOT NULL DEFAULT '',
  `be_mail` varchar(100) NOT NULL DEFAULT '',
  `ba_mail` varchar(100) NOT NULL DEFAULT '',
  `exp_date` varchar(19) NOT NULL DEFAULT '2000-01-01 01:01:01',
  `token` varchar(200) NOT NULL DEFAULT '',
  PRIMARY KEY (`kasuser`),
  UNIQUE KEY `be_mail` (`be_mail`),
  UNIQUE KEY `ba_mail` (`ba_mail`)
)

要获得类似上面的链接,您需要填写一个表单,该表单检查backup_mail (ba_mail)是否在数据库中并绑定到be_mail,您还必须将其与表单一起发送。然后用+30min生成日期,并由密码生成器生成令牌,该生成器将密码散列并将最终产品保存到数据库。然后,会向ba_mail发送一封带有上述链接的电子邮件。

我还想知道是否有可能生成一个带有隐藏表单的“链接”,它会将令牌作为$_POST发送给php,这是必需的。但我怀疑,这是否会在电子邮件客户端工作,有些人只看到纯文本。因此,我至少可以将令牌作为GET或?

EN

回答 1

Stack Overflow用户

发布于 2014-06-25 04:27:39

您可以生成令牌并将其与电子邮件一起存储在数据库中,然后在电子邮件链接中传递这两个令牌。

reset.php?token=5e51b_etc&email=test%40example.com

代码语言:javascript
运行
复制
$email = urldecode($_GET['email']);
$token = $_GET['token'];

您可以创建一个查询来检查令牌和电子邮件在数据库中是否匹配。

edit:您还需要检查访问时间是否小于您的$exp_date_time

edit 2:我刚刚注意到‘我真的不想发送带有链接的电子邮件’。您可以避免链接在电子邮件`密码重置中的样子。然后使用get数据处理请求,并使用有效的尝试/更改密码进行重定向,或者参数错误或请求太旧。我不会担心这个场景中的url。这不会是访问者要返回的东西,除非他们被发送另一封电子邮件重置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24395314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档