2011-08-07 4 views
1

Après avoir obtenu l'aide de @juhana (merci encore) J'ai fini avec theese codes pour valider l'entrée e-mail:Jquery email validation

email validate:

function validateEmail(){ 
var a = $("#email").val(); 
    $.ajax({ 
    type: "POST", 
    url: "check_email.php", 
    data: "email="+a, 
    success: function(rsp){ 
    //if it's valid email 
    if(rsp == "ok"){ 
    email.removeClass("error"); 
    emailInfo.text(""); 
    emailInfo.removeClass("error"); 
    return true; 
} 

else 
//if it exists 
if(rsp == "exists"){ 
email.addClass("error"); 
emailInfo.text("E-mail already in use"); 
emailInfo.addClass("error"); 
return false; 
} 

else 
//if it's NOT valid 
if(rsp == "invalid"){ 
email.addClass("error"); 
emailInfo.text("Please type a valid E-mail"); 
emailInfo.addClass("error"); 
return false; 
} 
} 
}); 
} 

check_email.php

<?php 
require_once('db_conn.php'); 
require_once('is_email.php'); 

$email = mysql_real_escape_string($_POST['email']); 
if (is_email($_POST['email'])){ 
echo 'ok'; 

$checkemail = mysql_query("SELECT E_mail FROM orders WHERE E_mail='$email'"); 
$email_exist = mysql_num_rows($checkemail); 

if($email_exist>0){ 
echo 'exists'; 
} 
}else{ 
echo 'invalid'; 
} 
?> 

Maintenant, 2 sur 3 fonctionnent "ok" et "invalides" ... le "existe" ne fonctionne pas.

Qu'est-ce qui ne va pas ???

Merci

+0

Qu'est-ce qui ne va pas où exactement, pouvez-vous clarifier? Que fait 'is_email()' dio, où est-il défini? –

+0

is_email est mon fichier de validation d'email ... Mon succès ajax fonctionne si msg est ** "ok" ** ou ** invalide **. Si msg est ** "existe" ** ne fonctionne pas. Fondamentalement ne regarde pas si l'email existe. – Pavlos1316

+1

Vos cinq dernières questions avaient des titres indiscernables. S'il vous plaît soyez plus descriptif et moins vague. * Cette * question semble plutôt concerner les malheurs de SQL. Avez-vous testé si cela fonctionne si vous appelez le script 'check_email' manuellement avec des paramètres connus? – mario

Répondre

1

en lisant votre code ci-dessus, si l'e-mail était valide, mais existait dans la base de données, il retournerait « okexists » qui provoqueraient votre javascript échouer. Vous aurez besoin de changer quelque chose comme ceci:

<?php 

$email = mysql_real_escape_string($_POST['email']); 
$checkemail = mysql_query("SELECT E_mail FROM orders WHERE E_mail='$email'"); 
$email_exist = mysql_num_rows($checkemail); 

    if (is_email($_POST['email'])){ 
     if($email_exist) { 
      echo "exists"; 
     } 
     else { 
      echo "ok"; 
     } 
    } else { 
     echo "invalid"; 
    } 

?> 

Ce qu'il permet de revenir ne le jeton « existe » lorsque son un email valide, mais existant. Et seulement le jeton "ok" quand c'est un email valide, pas déjà existant. Et bien sûr, il retourne invalide s'il ne passe pas le test is_email().

+0

Ahhh .... Je l'ai changé à cela une minute avant de poster ... :) Mais ma vraie erreur était que je cherchais un e-mail dans la table WRONG ... Sorryyyyyyyyyyyyyyyyy! – Pavlos1316

+0

Il y avait donc deux erreurs - personne ne pouvait savoir que le problème était dans la base de données. Il est souvent préférable de réduire les problèmes au plus petit exemple possible, autonome qui reproduit le problème. Même si cela signifie écrire quelque chose de nouveau pour montrer le comportement. – Erik

0
var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-][email protected][a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/; 
var email= $("#emailid").val(); 
if(!filter.test(email)){ 
     alert('Plz enter valid email id'); 
     return false; 
    } 
+1

Veuillez ajouter une explication à votre code et comment il résout le problème. –