Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP邮件在页面刷新时发送电子邮件_Php_Forms_Email_Contacts - Fatal编程技术网

PHP邮件在页面刷新时发送电子邮件

PHP邮件在页面刷新时发送电子邮件,php,forms,email,contacts,Php,Forms,Email,Contacts,啊 在此方面的任何帮助都将不胜感激!我有一个联系表单,它在刷新页面时发送电子邮件。我已经尝试了很多东西,但都一事无成。。到目前为止,我得到的是: if(isset($_POST['email']) && $_POST['email'] != '') { if( filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ){ $userName = $_POST['name']; $userEmail = $_PO

在此方面的任何帮助都将不胜感激!我有一个联系表单,它在刷新页面时发送电子邮件。我已经尝试了很多东西,但都一事无成。。到目前为止,我得到的是:

if(isset($_POST['email']) && $_POST['email'] != '') {

  if( filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ){

    $userName = $_POST['name'];
    $userEmail = $_POST['email'];
    $messageSubject = $_POST['subject'];
    $message = $_POST['message'];

    $to = "email@gmail.com";
    $body = "";

    $body .= "From: " .$userName. "\r\n";
    $body .= "Email: " .$userEmail. "\r\n";
    $body .= "Message: " .$message. "\r\n";
    header('Location: http://www.website.net/contact-thank-you.html');
    exit();
    mail($to, $messageSubject, $body);

    
  }

  }

?>

防止这种情况的最简单方法是在电子邮件发送后发送。网站通常会重定向到“谢谢”页面

您可能可以重定向到同一个URL(并且这不会发送第二封电子邮件,因为
$\u POST
将为空)


另一种方法是使用用户会话(
$\u session
)跟踪电子邮件是否已发送,如果检测到
$\u session
指示电子邮件已发送,则不再发送电子邮件。你也可以使用cookies来达到同样的目的。最后但并非最不重要的一点是,您可以将该信息存储在数据库中,并在发送电子邮件之前检查数据库,这样您就不会发送多封电子邮件。

顺便说一句,这就是所谓的模式。当我重定向到新URL时,是否需要创建一个html页面?@elsquidge您可以重定向到同一页面,因为该页面已经存在,这就是现在正在发生的事情(除了使用这种新方法,重新加载不会导致发送额外的电子邮件)。为了获得更好的用户体验,如果此页面没有电子邮件已发送的确认消息,则您需要添加该消息。或者,完全重定向到另一个“谢谢”页面可能更容易。在输出标题并退出之前,您必须调用
mail()