2015-03-30 3 views
-1

У меня возникли проблемы с проверкой правильности адреса электронной почты. но странно, что у меня одна и та же форма на разных страницах/URL-адресах, и в одной из форм он продолжает говорить о том, что письмо недействительно, а в форме оно действительное.FILTER_VALIDATE_EMAIL, что действительное сообщение недействительно

Форма на этой странице работы - http://night.sendme.to/about форму на этой странице оленья кожа - http://night.sendme.to/book/jokeren

HTML, о формах является тем же самым

<form action="" method="post" id="myform"> 
     <div class="form-group"> 
      <label for="name">Navn *</label> 
      <input type="text" class="form-control" id="name" name="name" placeholder="Navn" required="required"> 
     </div> 
     <div class="form-group"> 
      <label for="corp">Virksomhed</label> 
      <input type="text" class="form-control" id="corp" name="corp" placeholder="Virksomhed"> 
     </div> 
     <div class="form-group"> 
      <label for="email">Email adresse *</label> 
      <input type="email" class="form-control" id="email" name="email" placeholder="Email adresse" required="required"> 
     </div> 
     <div class="form-group"> 
      <label for="tel">Telefon *</label> 
      <input type="tel" class="form-control" id="tel" name="tel" placeholder="Telefon" required="required"> 
     </div> 
     <div class="form-group"> 
      <label for="message">Kommentar</label> 
      <textarea class="form-control" id="message" name="message" rows="10" required="required"></textarea> 
     </div> 
     <button type="submit" class="btn btn-default" id="submit">Send</button> 
     </form> 
     <div id="success" style="color:red;"></div> 

РНР является это

<?php // Here we get all the information from the fields sent over by the form. 
$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 

$to = 'YOURMAIL'; 
$subject = 'the subject'; 
$message = 'FROM: '.$name.' Email: '.$email.'Message: '.$message; 
$header = "MIME-Version: 1.0" . "\r\n"; 
$header .= "Content-type: text/html; charset=iso-8859-1" . "\r\n"; 
$header .= "from:".$_POST['email']; 

if (filter_var($email, FILTER_VALIDATE_EMAIL)) { // this line checks that we have a valid email address 
    mail($to, $subject, $message, $header); //This method sends the mail. 
    echo "Your email was sent!"; 
    echo var_dump(filter_var($email, FILTER_VALIDATE_EMAIL)); 
} else { 
    echo "Invalid Email, please provide an correct email."; 
    echo var_dump(filter_var($email, FILTER_VALIDATE_EMAIL)); 
} 
?> 

javascript это

$(document).ready(function(){ 
    $('#submit').click(function(){ 
     $.post("email.php", $("#myform").serialize(), function(response) { 
     $('#success').html(response); 
     //$('#success').hide('slow'); 
     }); 
     return false; 
    }); 
}); 

Надежда кто-то может помочь, почему форма работает только на http://night.sendme.to/about и другие

+0

, который является вашей версией PHP версии – Ghostman

+0

Пожалуйста, отметьте отмеченный ответ в этой ссылке: - http://stackoverflow.com/questions/19220158/php-filter-validate-email-not-works-correctly. Надеюсь, он поможет вам выяснить, почему эта проблема возникает. –

+0

И каков фактический адрес электронной почты, с которым у вас есть эта проблема? (Возможно, это проблема кодировки символов, если ваши формы отправляются с разными ...) – CBroe

ответ

1

Так, чтобы не оставить этот вопрос ответ менее:

В вашем HTML коде, вы на самом деле было <form action="" method="post" id="myform"> в обе страницы - но на вашей второй странице у вас был еще один тег <form> прямо перед ним ... и из-за этого недопустимого HTML браузер игнорировал второй тег формы, и это сделало $("#myform").serialize() вообще не возвращать какие-либо данные, поскольку он не смог найти элемент формы с этим идентификатором.

Вы всегда должны указать validate свой код HTML. Это помогает избежать таких ошибок.

Смежные вопросы