2017-04-14 21 views
0

私は空のEメールを送信するこの連絡フォームを持っています。しかし、私はいくつかのテストを行い、それは私に起こらない。これが起こる唯一の方法は、私が思うに、.phpファイルに直接アクセスすることです。そうでない場合、私は何が問題になるのか分かりません。フォームで空のメールを送信することはできません。これが起き続けるならば、私はPHPファイルにバリデーションを追加するつもりですが、何が問題なのかを知るまで、私はこのメッセージを無視したくありません。Ajax/phpの連絡フォーム随時空のEメールを送信しています

これは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> 

これは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; 
} 

そして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"; 
} 
?> 

あるおかげです!

答えて

0

恐らくPHPエンドポイントをテストしているJSの一部で、データを送信して大混乱の原因となっているボットでしょう。電子メールが送信されるたびに$ _POST変数を記録すると、いくつかの$ _POST変数にスパムのナンセンスがたくさんあると思います。ボットはスマートではなく、POSTで使用するキーを知ることができないため、電子メールは空白です。

関連する問題