我有一個PHP聯繫表格,它工作得很好,但現在我的客戶說它重複或甚至發送4-5倍的聯繫電子郵件,我的客戶說,它顯示的時間太長響應在網頁上,告訴用戶評論也已發送,但我已經在我自己的服務器上測試過,一切正常,有沒有機會可能是他們的服務器的問題?這是我的html:PHP表單發送重複的電子郵件
<form id="contactForm" action="contacto.php" method="POST" novalidate>
<p>
<label for="nombre">Tu nombre completo</label>
</p>
<p>
<input type="text" name="nombre" id="nombre" placeholder="Nombre y apellidos" required oninvalid="this.setCustomValidity('Por favor, llena todos los campos')" oninput="setCustomValidity('')"/>
</p>
<p>
<label for="correo">Tu e-mail</label>
</p>
<p>
<input type="text" name="correo" id="correo" placeholder="[email protected]" required oninvalid="this.setCustomValidity('Por favor, llena todos los campos')" oninput="setCustomValidity('')"/>
</p>
<p>
<label for="asunto">Asunto</label>
</p>
<p>
<input type="text" name="asunto" id="asunto" placeholder="¿Por qué nos escribes?" required oninvalid="this.setCustomValidity('Por favor, llena todos los campos')" oninput="setCustomValidity('')"/>
</p>
<p>
<label for="aspirante">Nombre completo del aspirante</label>
</p>
<p>
<input type="text" name="aspirante" id="aspirante" placeholder="Nombre y apellidos" required oninvalid="this.setCustomValidity('Por favor, llena todos los campos')" oninput="setCustomValidity('')"/>
</p>
<p>
<label for="fecha">Fecha de nacimiento del aspirante</label>
</p>
<p>
<input type="text" name="fecha" id="fecha" placeholder="dd/mm/aa" required oninvalid="this.setCustomValidity('Por favor, llena todos los campos')" oninput="setCustomValidity('')"/>
</p>
<p>
<label for="grado">Grado a cursar</label>
</p>
<p>
<input type="text" name="grado" id="grado" placeholder="Grado a cursar" required oninvalid="this.setCustomValidity('Por favor, llena todos los campos')" oninput="setCustomValidity('')"/>
</p>
<p>
<label for="ciclo">Ciclo escolar</label>
</p>
<p>
<input type="text" name="ciclo" id="ciclo" placeholder="Ej. 2016-2017" required oninvalid="this.setCustomValidity('Por favor, llena todos los campos')" oninput="setCustomValidity('')"/>
</p>
<p>
<label for="escuela">Escuela de procedencia</label>
</p>
<p>
<input type="text" name="escuela" id="escuela" placeholder="Escuela de procedencia" required oninvalid="this.setCustomValidity('Por favor, llena todos los campos')" oninput="setCustomValidity('')"/>
</p>
<p>
<label for="ciudad">Ciudad de origen</label>
</p>
<p>
<input type="text" name="ciudad" id="ciudad" placeholder="Ciudad de origen" required oninvalid="this.setCustomValidity('Por favor, llena todos los campos')" oninput="setCustomValidity('')"/>
</p>
<p>
<label for="comentario">Comentarios</label>
</p>
<p>
<textarea type="text" name="comentario" id="comentario" placeholder="Déjanos saber tus comentarios" required oninvalid="this.setCustomValidity('Por favor, llena todos los campos')" oninput="setCustomValidity('')"/></textarea>
</p>
<p class="submit">
<button type="submit">Enviar</button>
</p>
</form>
和JS驗證窗體。我還包含禁用的按鈕屬性一旦被寄到:
<script>
/* Forma Contacto */
$("#contactForm").submit(function(event) {
/* stop form from submitting normally */
event.preventDefault();
/* get some values from elements on the page: */
var $form = $(this),
$submit = $form.find('button[type="submit"]'),
nombre_value = $form.find('input[name="nombre"]').val(),
correo_value = $form.find('input[name="correo"]').val(),
asunto_value = $form.find('input[name="asunto"]').val(),
aspirante_value = $form.find('input[name="aspirante"]').val(),
fecha_value = $form.find('input[name="fecha"]').val(),
grado_value = $form.find('input[name="grado"]').val(),
ciclo_value = $form.find('input[name="ciclo"]').val(),
escuela_value = $form.find('input[name="escuela"]').val(),
ciudad_value = $form.find('input[name="ciudad"]').val(),
comentario_value = $form.find('textarea[name="comentario"]').val(),
url = $form.attr('action');
if (!event.target.checkValidity()) {
// the form is not valid
// show some nice errors here
$submit.text('Llena todos los campos');
return false;
}else{
/* Send the data using post */
var posting = $.post(url, {
nombre: nombre_value,
correo: correo_value,
asunto: asunto_value,
aspirante: aspirante_value,
fecha: fecha_value,
grado: grado_value,
ciclo: ciclo_value,
escuela: escuela_value,
ciudad: ciudad_value,
comentario: comentario_value,
});
posting.done(function(data){
/* Put the results in a div */
$("#contactResponse").html(data);
/* Change the button text. */
$submit.text('Enviado');
/* Disable the button. */
$submit.attr("disabled", true);
});
}
});
</script>
最後我的PHP:
<?php
$EmailFrom = "[email protected]";
$EmailTo = "[email protected]";
$Subject = "Nuevo comentario en el website";
$nombre = Trim(stripslashes($_POST['nombre']));
$correo = Trim(stripslashes($_POST['correo']));
$asunto = Trim(stripslashes($_POST['asunto']));
$aspirante = Trim(stripslashes($_POST['aspirante']));
$fecha = Trim(stripslashes($_POST['fecha']));
$grado = Trim(stripslashes($_POST['grado']));
$ciclo = Trim(stripslashes($_POST['ciclo']));
$escuela = Trim(stripslashes($_POST['escuela']));
$ciudad = Trim(stripslashes($_POST['ciudad']));
$comentario = Trim(stripslashes($_POST['comentario']));
// prepare email body text
$Body = "";
$Body .= "Nombre: ";
$Body .= $nombre;
$Body .= "\n";
$Body .= "E-mail: ";
$Body .= $correo;
$Body .= "\n";
$Body .= "Asunto: ";
$Body .= $asunto;
$Body .= "\n";
$Body .= "Nombre del aspirante: ";
$Body .= $aspirante;
$Body .= "\n";
$Body .= "Fecha de Nacimiento: ";
$Body .= $fecha;
$Body .= "\n";
$Body .= "Grado a cursar: ";
$Body .= $grado;
$Body .= "\n";
$Body .= "Ciclo escolar: ";
$Body .= $ciclo;
$Body .= "\n";
$Body .= "Escuela de procedencia: ";
$Body .= $escuela;
$Body .= "\n";
$Body .= "Ciudad de origen: ";
$Body .= $ciudad;
$Body .= "\n";
$Body .= "Comentario: ";
$Body .= $comentario;
$Body .= "\n";
// send email
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");
// redirect to success page
if ($success){
echo "<h2>¡Gracias! Recibimos tu mensaje</h2>";
}
else{
echo "<h2>Lo sentimos, hubo un error, inténtalo nuevamente</h2>";
}
?>
這有什麼錯我的代碼?正如我所說,我已經測試過它到我的服務器,並且一切正常,但不在我的客戶端服務器上。任何幫助?
檢查客戶端php版本和電子郵件配置或不在onserver –
如果你不重定向到另一個頁面,如果用戶刷新頁面,表單再次提交。注意這一點。但是,如果這不是問題,您可以使用外部庫發送郵件,如https://github.com/PHPMailer/PHPMailer –