我正在尝试使用邮件重置密码,因此用户将在忘记的密码上输入他的电子邮件,点击按钮将其发送到数据库中的电子邮件。现在我要做的是给用户一个新的随机密码,为此,用户应该点击电子邮件上的链接来验证他是否真的想要更改密码,这可能吗?这是我的代码
if (isset($_POST['mytxtmail']))
{
$newid = ($_POST['mytxtmail']);
$result = mysqli_query($con,"SELECT EMAIL FROM members WHERE EMAIL='$newid'");
if($result->num_rows == 0) {
echo 'Mail Successfully Sent to '.$newid;
return false;
}
else
$to = $newid;
$subject = 'the subject';
$message = 'Please Click here to Verify the Change of Password';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
echo 'Mail Successfully Sent to '.$newid;
}
答案 0 :(得分:1)
在这里编写完整代码是一个漫长的过程。
您可以做的一种方法是,在用户表格中创建一个新列,让我们说pass_request_hash
,现在每当用户点击忘记密码选项并输入他的电子邮件ID并提交时,就会运行更新查询将随机值转储到该用户的pass_request_hash
,同时使用相同的哈希值发送邮件,并将其电子邮件ID作为GET
参数发送。
现在,当用户点击通过电子邮件发送给他的链接时,该链接指向一个PHP脚本,该脚本会检查从GET
参数收到的哈希和电子邮件是否与数据库中的那些,如果是,则可以执行另一个脚本以向该电子邮件ID发送新密码。
您还可以为该哈希设置超时。
还有其他方法可以做,请查看其中一些教程:
答案 1 :(得分:0)
您应该在电子邮件中包含该链接,该链接会将用户带到密码验证脚本(它可能与您在此处使用的相同,仅添加所需的功能)。