2015-03-30 1 views
-1

J'ai un problème pour vérifier si un e-mail est valide. mais le bizarre est que j'ai la même forme sur différentes pages/urls, et sur l'une des formes il continue à dire que l'email est invalide et sur le formulaire son valide.FILTER_VALIDATE_EMAIL indiquant qu'un e-mail valide est invalide

Le formulaire sur cette page fonctionne - http://night.sendme.to/about le formulaire sur cette page ne marche pas - http://night.sendme.to/book/jokeren

Le code HTML sur les formulaires est le même

<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> 

Le PHP est ce

<?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)); 
} 
?> 

Le javascript est

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

espoir quelqu'un peut aider, pourquoi la forme ne fonctionne que sur le http://night.sendme.to/about et les autres

+0

qui est votre VERSION PHP utilisé – Ghostman

+0

S'il vous plaît vérifier la réponse marquée dans ce lien: - http://stackoverflow.com/questions/19220158/php-filter-validate-email-not-works-correctly. J'espère que cela vous aidera à découvrir pourquoi ce problème se produit. –

+0

Et quelle est l'adresse e-mail réelle avec laquelle vous avez ce problème? (Peut-être est-ce un problème d'encodage de caractères, si vos formulaires sont envoyés avec des formulaires différents ...) – CBroe

Répondre

1

Ainsi, pour ne pas laisser cette réponse-moins question:

Dans votre code HTML, vous aviez fait <form action="" method="post" id="myform"> dans les deux pages - mais dans votre deuxième page, vous aviez une autre balise <form> juste avant ... et à cause de ce HTML invalide, le navigateur a ignoré la deuxième balise de formulaire, et cela fait $("#myform").serialize() ne retourne aucune donnée, parce qu'il n'a pas pu trouver le élément de formulaire avec cet identifiant. Vous devez toujours validate votre code HTML. Cela permet d'éviter de telles erreurs.