我当前正在使用令牌,并且有一些代码会过期$ expires = date(“ U”)+ 1800;在用户请求链接后大约30分钟。 PHP发送功能会在几秒钟内将电子邮件发送到我域中的任何地址,但是任何其他域(例如Gmail帐户)最多可能需要40分钟左右的时间。有没有办法提高我的PHP脚本中重置链接电子邮件的优先级?还是我只需要简单地增加令牌过期并稍微降低我的安全性?
谢谢!
我尝试更改$ from和$ header信息,但没有任何积极结果。我还做了很多谷歌搜索和搜索堆栈。我主要是在寻找有关如何设置基本发送功能的信息,这已经是我了。
...
$expires = date("U") + 1800;
require 'config.php';
$userEmail = $_POST["email"];
$sql = "DELETE FROM pwdReset WHERE pwdResetEmail=?";
$stmt = mysqli_stmt_init($link);
if (!mysqli_stmt_prepare($stmt, $sql)) {
echo "There was an error!";
exit();
} else {
mysqli_stmt_bind_param($stmt, "s", $userEmail);
mysqli_stmt_execute($stmt);
}
$sql = "INSERT INTO pwdReset (pwdResetEmail, pwdResetSelector, pwdResetToken, pwdResetExpires) VALUES (?, ?, ?, ?)";
$stmt = mysqli_stmt_init($link);
if (!mysqli_stmt_prepare($stmt, $sql)) {
echo "There was an error!";
exit();
} else {
$hashedToken = password_hash($token, PASSWORD_DEFAULT);
mysqli_stmt_bind_param($stmt, "ssss", $userEmail, $selector, $hashedToken, $expires);
mysqli_stmt_execute($stmt);
}
mysqli_stmt_close($stmt);
mysqli_close($link);
$to = $userEmail;
// Subject
$subject = 'Reset your mydomainhere password';
// Message
$message = 'We recieved a password reset request for your account. If you did not make this request, please disregard this email. Your password reset link is:';
$message .= '<a href="' . $url . '">' . $url . '</a></p>';
// Headers
$headers = "From: The mydomainhere Team <info@mydomainhere.org>\r\n";
$headers .= "Reply-To: info@mydomainhere.org\r\n";
$headers .= "Content-type: text/html\r\n";
// Send e-mail
mail($to, $subject, $message, $headers);
header("Location: https://www.mydomainhere.org/login/forgotPass.php?reset=success");
} else {
header("Location: https://www.mydomainhere.org/login/forgotPass.php?reset=error");
exit();
}
PHP邮件功能正在运行,它花费的时间比预期的要长。我希望在邮件中添加某种紧急标签,以便外部服务器可以更快地接受它。
答案 0 :(得分:0)
我可以在PHP邮件发送功能中添加紧急状态,以使密码重置在用户收到密码后不会过期吗?
否,电子邮件没有“快速送达”。存在“紧急”标头,但对传递没有影响。 (它的唯一作用是在某些客户端中在邮件上显示标志。)
如果您的某些邮件要花费“最多40分钟左右”的时间发送到GMail,则您的邮件服务器出了点问题,需要解决。这与您的代码无关。