我可以在PHP邮件发送功能中添加紧急状态,以使密码重置在用户收到密码后不会过期吗?

时间:2019-07-29 13:50:45

标签: php token sendmail forgot-password

我当前正在使用令牌,并且有一些代码会过期$ 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邮件功能正在运行,它花费的时间比预期的要长。我希望在邮件中添加某种紧急标签,以便外部服务器可以更快地接受它。

1 个答案:

答案 0 :(得分:0)

  

我可以在PHP邮件发送功能中添加紧急状态,以使密码重置在用户收到密码后不会过期吗?

否,电子邮件没有“快速送达”。存在“紧急”标头,但对传递没有影响。 (它的唯一作用是在某些客户端中在邮件上显示标志。)

如果您的某些邮件要花费“最多40分钟左右”的时间发送到GMail,则您的邮件服务器出了点问题,需要解决。这与您的代码无关。