我想知道如何在包含$_POST数据的电子邮件中发送链接。它是为php中的电子邮件重置功能准备的。我真的不想发送带有如下链接的电子邮件
http://example.reset.com/reset.php?token=5e51b695b8260632e55cad464039c2b4d7ec2cbca0331b881fabc4ada71cffac3808aa105ec5e9a9b693768774ddb6c3160359f9195c2e442c7c7a82ed849033那么,实现这一点是可能的吗?
我已经检查了令牌是否在数据库中,以及$exp_date_time信息是否太旧。在收到邮件后,用户只有30分钟来更改他的密码。如果这些步骤之一不起作用,尝试连接到reset.php的人将被重定向到index.php。
现在我不想有一个机器人意外地得到了肯定的回应。
对于信息,令牌长度为128,由使用修改后的sha512散列生成的随机密码生成。
我怎么才能让它更安全呢?
干杯
斯文
其他信息:
我的数据库:
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或?
发布于 2014-06-25 04:27:39
您可以生成令牌并将其与电子邮件一起存储在数据库中,然后在电子邮件链接中传递这两个令牌。
reset.php?token=5e51b_etc&email=test%40example.com
$email = urldecode($_GET['email']);
$token = $_GET['token'];您可以创建一个查询来检查令牌和电子邮件在数据库中是否匹配。
edit:您还需要检查访问时间是否小于您的$exp_date_time。
edit 2:我刚刚注意到‘我真的不想发送带有链接的电子邮件’。您可以避免链接在电子邮件`密码重置中的样子。然后使用get数据处理请求,并使用有效的尝试/更改密码进行重定向,或者参数错误或请求太旧。我不会担心这个场景中的url。这不会是访问者要返回的东西,除非他们被发送另一封电子邮件重置。
https://stackoverflow.com/questions/24395314
复制相似问题