2017-04-14 1 views
0

Eh bien, j'ai ce formulaire de contact qui envoie des emails vierges. Mais j'ai fait des tests et ça ne m'arrive pas. La seule façon dont cela pourrait arriver, je pense, serait d'accéder directement au fichier .php. Sinon je ne sais pas quel pourrait être le problème. Le formulaire ne vous permet pas d'envoyer un e-mail vide. Si cela continue, je vais ajouter une validation dans le fichier php, mais jusqu'à ce que je découvre quel est le problème, je ne veux pas ignorer ces messages.Formulaire de contact Ajax/php envoyant des emails vierges de temps en temps

C'est le HTML

<form name="contactForm" id="contactForm" method="post" action="/contactEngine.php" onsubmit="return validateForm()"> 
     <input title="Input name" type="text" name="Name" id="Name" placeholder="Nombre:" required=""> 
     <input title="Input email" placeholder="Email:" type="email" name="Email" id="Email" required=""> 
     <input type="text" placeholder="Subject:" name="Subjet" id="Subjet"> 
     <textarea title="Input message" placeholder="Mensaje:" name="Message" rows="20" cols="20" id="Message" required=""></textarea> 
     <input title="Input result" placeholder="25 + 25 = ?" type="text" name="Captcha" id="Captcha" required=""> 
     <p id="wrongCaptcha"> Try again </p> 
     <input type="submit" name="submit" value="send" class="submit-button"> 
</form> 

Ceci est la JS

function validateForm(e) { 
e.preventDefault(); 
var x = document.forms["contactForm"]["Captcha"].value; 
if (x != 50) {//if captcha is wrong 
    $("#Captcha").addClass("wrongCaptchaEntered"); 
    $("#Captcha").css("animation-name" , "none"); 
    setTimeout (function(){ 
     $("#Captcha").css("animation-name" , "changeBorder"); 
    },100); 
    if ($("#wrongCaptcha").css("display") == "none"){ 
     $("#wrongCaptcha").slideDown(); 
    } 
} 
else { //if captcha is correct 
    var formAction = $("#contactForm").attr("action"); 
    if (formAction == "/contactEngine.php"){ 
     var formData = $("#contactForm").serialize(); 
     $.post(formAction, formData, function(data){ 
      console.log (data); 
      $(".formulario").changeTo({content: "<h2 class='section-title BackgroundGradientBlack'>"+ data +"</h2>"}); 
     }); 
    } 
} 
return false; 
} 

Et le PHP

<?php 
$EmailFrom = "[email protected]"; 
$EmailTo = "[email protected]"; 
$Name = Trim(stripslashes($_POST['Name'])); 
$Email = Trim(stripslashes($_POST['Email'])); 
$Subject = Trim(stripslashes($_POST['Subjet']));  
$Message = Trim(stripslashes($_POST['Message'])); 


$email_content = "Frontpage"; 
$email_content .= "\nNombre: $Name"; 
$email_content .= "\nEmail: $Email"; 
$email_content .= "\nMotivo: $Subject"; 
$email_content .= "\nMensaje: $Message"; 


$email_headers = "From: <$EmailFrom>"; 


if (mail($EmailTo, $Subject, $email_content, $email_headers)) { 
    http_response_code(200); 
    echo "Mensaje enviado"; 
} else { 
    http_response_code(500); 
    echo "Error"; 
} 
?> 

Merci!

Répondre

0

Probablement un bot qui teste le point de terminaison PHP qu'il peut voir dans votre JS et qui lui envoie des données, essayant de provoquer des dégâts. Je parie que si vous avez enregistré la variable $ _POST chaque fois qu'un email a été envoyé, vous avez vu beaucoup de bêtises dans certaines variables $ _POST. Les e-mails sont vides simplement parce que les robots ne sont pas assez intelligents pour savoir quelles clés utiliser dans leurs POST.