Ich habe ein Skript, das eine E-Mail mit in Sitzungen gespeicherten Informationen sendet - die Informationen werden von einem Formular gesammelt, das ein Benutzer ausfüllt. (Formular ‚Aktion‘ unten auf den Code gerichtet ist)PHP E-Mail senden E-Mail mehrmals senden
Wenn jedoch der Submit-Button zum Beispiel zweimal auf das Formular geklickt wird, werden zwei E-Mails gesendet und wenn 3 Mal angeklickt, 3 E-Mails gesendet .
ich sicherstellen möchten, dass nur 1 E-Mail gesendet wird, und wenn eine Sitzung leer ist keine E-Mail gesendet werden soll:
<?php
session_start();
if(isset($_POST['email'])) {
$email_to = "[email protected]";
$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: [email protected]' . "\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");
?>
Sie könnten der Sitzung eine Zählervariable hinzufügen, wenn sie leer ist/0/nicht festgelegt, senden Sie die E-Mail. Ansonsten nicht. – Antony
Wird dreimal gesendet (mit drei Klicks), ohne erneut zu laden oder umzuleiten? – Progrock
Ähnlich: http://stackoverflow.com/questions/4614052/how-to-prevent-multiple-form-submission-on-multiple-clicks-in-php – Progrock