Temelde, verdiğim bir e-posta komut dosyasına erişen ve kullanıcının belirtilen alanlarda belirlediği içeriğe mesaj gönderen bir form var. PHP betiği aracılığıyla, bir kereden fazla gönderilmesinin devre dışı bırakılmasının mümkün olup olmadığını merak ediyordum ...Formu iptal et PHP betiği ile spam gönder
Bu bir e-posta formu, eğer kullanıcı "submit" düğmesine bir defadan fazla basarsa, ' e-postayı bir kereden fazla gönderirim. Bir kişi gönder düğmesine 100 kez basarsa, e-postama 100 mesaj gönderilecektir.
Öyleyse, sorum şu, bir PHP betiğinin zaten gönderildikten sonra tekrar çalışmasını durdurmak için var mı?
Formun kodu aşağıdadır. İşte
<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>
sendmail.php şudur: sizin PHP görünüyor ve form kodu ok görünüyor
<?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");
}
?>
Bir oturum değişkeni ayarlarsanız, komut her başladığında kontrol edin. eğer ayarlanmışsa, o zaman betik zaten yürütülmüştür. –
Evet, captcha kullanın. – ops
@MarcB bana bunu nasıl yapacağımı gösterecek kadar nazik misiniz? –