Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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 Post电子邮件多次发送电子邮件_Php_Session_Forms - Fatal编程技术网

PHP Post电子邮件多次发送电子邮件

PHP Post电子邮件多次发送电子邮件,php,session,forms,Php,Session,Forms,我有一个脚本,可以发送一封电子邮件,其中包含存储在会话中的信息——这些信息是从用户填写的表单中收集的(表单“操作”指向下面的代码) 但是,例如,在表单上单击两次提交按钮时,会发送2封电子邮件,单击3次时,会发送3封电子邮件 我想确保只发送1封电子邮件,如果任何会话为空,则不发送电子邮件: <?php session_start(); if(isset($_POST['email'])) { $email_to = "recipient@emailaddress.com"; $emai

我有一个脚本,可以发送一封电子邮件,其中包含存储在会话中的信息——这些信息是从用户填写的表单中收集的(表单“操作”指向下面的代码)

但是,例如,在表单上单击两次提交按钮时,会发送2封电子邮件,单击3次时,会发送3封电子邮件

我想确保只发送1封电子邮件,如果任何会话为空,则不发送电子邮件:

<?php

session_start();

if(isset($_POST['email'])) {

$email_to = "recipient@emailaddress.com";
$email_subject = "My Subject";


$machine = implode(",", $_SESSION['machinesesh']); //required 
$machine_type = implode(" ", $_SESSION['typesesh']);; // required
$address = $_SESSION['addresssesh']; //required
$county = $_SESSION['countysesh']; //required
$postcode = $_SESSION['postcodesesh']; //required
$workplace = implode(', ', $_SESSION['worksesh']); //required
$serving = implode(', ', $_SESSION['peoplesesh']);
$company_name = $_SESSION['namesesh']; // required
$visitorname = $_POST['yourname']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['telephone']; // not required


$email_message = "New email alert .\n\n";

function clean_string($string) {
  $bad = array("content-type","bcc:","to:","cc:","href");
  return str_replace($bad,"",$string);
}

$email_message .= "Name: ".clean_string($visitorname)."\n";
$email_message .= "Company: ".clean_string($company_name)."\n";
$email_message .= "Address Line 1: ".clean_string($address)."\n";
$email_message .= "County: ".clean_string($county)."\n";
$email_message .= "Postcode: ".clean_string($postcode)."\n";
$email_message .= "Machine(s) Wanted: ".clean_string($machine)."\n";
$email_message .= "Environment: ".clean_string($workplace)."\n";
$email_message .= "Serving: ".clean_string($serving)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Telephone: ".clean_string($telephone)."\n";


// create email headers
$headers = 'From: sendaddress@email.com' . "\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers); 

header("Location: http://www.example.com?tag=$machine");

?>


设置$\u会话[“emailsent”]=1?在发送电子邮件之前,请检查变量是否存在以及是否设置为1!在这种情况下,您知道,在此会话中,电子邮件只发送一次

您可以在发送电子邮件后尝试删除会话。下次提交表单时,它应该检查是否设置了会话值。如果未设置,则不应再次发送电子邮件。

您可以向会话添加计数器变量,如果为空/0/未设置,则发送电子邮件。否则,不要。它是否发送三次(单击三次)而不重新加载或重定向?类似: