Grundsätzlich habe ich ein Formular, das auf ein E-Mail-Skript, das ich gemacht habe, zugreifen und senden Sie eine Nachricht mit dem Inhalt, den der Benutzer in den angegebenen Feldern setzt. Ich habe mich gefragt, ob es möglich war, durch das PHP-Skript zu verhindern, dass es mehr als einmal gesendet wird ...Stop form submit spamming über PHP script
Es ist ein E-Mail-Formular, wenn der Benutzer also mehrmals auf die Schaltfläche "Senden" klickt, Ich werde die E-Mail mehrmals senden. Wenn eine Person den Absenden-Knopf 100 Mal drückt, werden 100 Nachrichten an meine E-Mail gesendet.
Also meine Frage ist, gibt es sowieso, um ein PHP-Skript zu stoppen wieder ausgeführt, sobald es bereits eingereicht wurde?
Unten ist der Code des Formulars.
<form action="http://sebastianalsina.com/contact/sendmail.php" method="post">
<input type="text" placeholder="Name" name="name">
<input type="text" placeholder="Email" name="email">
<input type="text" placeholder="Subject" name="subject">
<textarea placeholder="Write your message here" name="message" rows="6"></textarea>
<input type="submit" name="submit" class="sendmessage" value="Send message">
</form>
Hier ist sendmail.php:
<?php
require 'PHPMailerAutoload.php';
include 'variables.php';
// receiver message
if ($_POST['name'] != "" && $_POST['email'] != "" && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) && $_POST['message'] != "") {
$mail = new PHPMailer;
$mail->AddReplyTo($_POST['email'], $_POST['name']);
$mail->setFrom($fromEmail, $_POST['name'] . ' (' . $companyName . ' Web Mailer)');
$mail->addAddress($toEmail);
$mail->isHTML(true);
$mail->Subject = $_POST['subject'];
$mail->Body = '**CODE WAS REMOVED HERE BECAUSE IT WAS REALLY LONG**';
$mail->AltBody = $_POST['message'];
if(!$mail->send()) {
header("Location: error.php");
} else {
header("Location: thankyou.php");
}
} else {
header("Location: error.php");
}
?>
Legen Sie eine Sitzungsvariable fest, überprüfen Sie sie jedes Mal, wenn das Skript gestartet wird. Wenn es gesetzt ist, dann hat das Skript offensichtlich bereits ausgeführt. –
Ja, benutze Captcha. – ops
@MarcB wärst du nett genug, mir zu zeigen, wie das geht? –