2011-11-24 2 views
0

Je suis actuellement en utilisant un formulaire e-mail, qui publie du texte une fois que l'adresse e-mail a été soumise. Je voudrais ajouter une option de validation à ceci afin que je ne reçoive pas d'info bidon. Ci-dessous, j'ai joint le code html, javascript, php et le code de validation que je voudrais utiliser. Je suis actuellement en train de rencontrer le problème du traitement des formulaires même si l'email n'est pas valide. S'il vous plaît aider.Javascript Email Validation - Aide?

HTML

<form action="scripts/women-logo-white-process.php" method="post" id="contact_form_women_logo_white" name="ContactForm" onsubmit="return ValidateContactForm();"> 
    <div style="width: 179px; margin-left: 115px"> 
      <div style="width: 179px;"> 
       <input type="text" name="Email" id="email" value="email" rel="req" tabindex="2" class="text-area" /> 
      </div> 
      <div id="loader" style="width: 121px; margin-left: 27px;"> 
       <div class="submit-button" style="width:121px;"><input type="submit" name="" value=""></div> 
      </div> 
     </div> 
</form> 

PHP

<?php 
$toemail = '[email protected]';; 
$email = $_POST['email'];; 

$messageBody = "Email: " . $email; 



if(mail($toemail, 'Mens Logo White' . $subject, 'From: ' . $email)) { 
    echo ' 
    <div> 
     <div class="success"></div> 
     <div class="email-text">Thank you for your interest in our products. We will notify you as soon as this product is available. Until then please check back for new designs and follow use on Twitter & Facebook @ParoteesApparel.</div> 
    </div>'; 
} else { 
    echo ' 
    <div> 
     <div class="error"></div> 
     <div class="email-text">There was a problem with your submission, please reload this page and try again.</div> 
    </div>'; 
} 
?> 

actuel Javascript

$(function() { 
    $('#contact_form_men_logo_white').submit(function (e) { 
     e.preventDefault(); 
     var form = $(this); 
     var post_url = form.attr('action'); 
     var post_data = form.serialize(); 
     $('#loader', form).html('<div style="margin-left: -30px; margin-bottom: 35px; margin-top: -20px;"><div class="loader"></div><div class="wait-text">Please wait...</div></div>'); 
     $.ajax({ 
      type: 'POST', 
      url: post_url, 
      data: post_data, 
      success: function (msg) { 
       $(form).fadeOut(500, function() { 
        form.html(msg).fadeIn(); 
       }); 
      } 
     }); 
    }); 
}); 

Validation Script Je Voudrais Ajouter à mon actuelle Javascript

function ValidateContactForm() { 
    var email = document.ContactForm.Email; 

    if (email.value == "") 
    { 
     window.alert("Please enter a valid e-mail address."); 
     email.focus(); 
     return false; 
    } 
    if (email.value.indexOf("@", 0) < 0) 
    { 
     window.alert("Please enter a valid e-mail address."); 
     email.focus(); 
     return false; 
    } 
    if (email.value.indexOf(".", 0) < 0) 
    { 
     window.alert("Please enter a valid e-mail address."); 
     email.focus(); 
     return false; 
    } 
    return true; 
} 
+0

Qu'est-ce que c'est «toe mail»? (J'ai * essayé * de le lire comme "envoyer par courrier électronique" mais j'ai échoué.) Si vous aviez une collection de filtres de messagerie, seraient-ils des "tondeurs de courrier"? De même, si vous utilisez JS pour effectuer la validation des e-mails côté client, utilisez une regex ou autre chose; c'est une horrible vérification d'adresse e-mail. –

+0

J'ai extrait votre code sur http://jsfiddle.net/Ya4d6/ si je tape enter ou ok il semble que tout fonctionne correctement! – Grrbrr404

+0

c'est "envoyer par courriel" se référant à l'adresse e-mail dans laquelle l'e-mail est envoyé à –

Répondre

3

Faire une validation en javascript est une affaire de fou, d'autant plus que vous ne faites pas la validation en PHP aussi. il est trivial de contourner un validateur Javascript et d'envoyer des informations fausses directement au serveur.

Bien que la validation JS soit utile pour fournir une rétroaction immédiate, elle ne devrait PAS être utilisée pour protéger réellement votre code côté serveur.

Changer votre PHP à quelque chose comme:

$email = $_POST['email'];; 

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    die("Invalid email address"); 
} 
+0

Et pour le site javascript, une regex serait une bien meilleure façon. Cela devrait fonctionner: [A-Z0-9 ._% + -] + @ [A-Z0-9 .-] + \. [AZ] {2,4} – Grrbrr404

+0

@MarcB c'est une excellente solution, je ne sais pas Je fais beaucoup de php donc c'est parfait. Ma seule question est après que le texte est show puis-je recharger ce formulaire sur la page? Il remplace actuellement le formulaire par "adresse e-mail invalide" Je voudrais qu'il dise cela, mais aussi avoir le formulaire là-bas pour que l'utilisateur puisse entrer un email valide. Je ne voudrais pas non plus un pop-up dans le navigateur à la place si c'est plus facile –

2

Voici un exemple de travail du script regex Grrbrr parlait:

où $ ("# e-mail") serait votre forme élément d'entrée:

$("#email").blur(function() { 
var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 
var address = $(this).val(); 
if(reg.test(address) == false) { 
$("#valbox").removeClass().addClass("valincorrect").html('Please enter a valid e- mail').fadeIn(500) 

} else { 
$("#valbox").removeClass().addClass("valcorrect").html('Accepted') 

    } 
})