IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Mail] Test sur e-mail


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 911
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 911
    Points : 420
    Points
    420
    Par défaut [Mail] Test sur e-mail
    Bonjour, j'effectue un test sur la validité de l'email saisi dans un formulaire mais ça ne foncntionne pas...

    voic mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    if(empty($mail)) { $erreur[] = '<center><font color="red">Le <b>Mail</b> est vide !</font></center>';}
    									elseif($point=='') { $erreur[] = '<center><font color="red">Votre email doit comporter un <b>point</b></font></center>';} 
    									elseif($aroba=='') { $erreur[] = '<center><font color="red">Votre email doit comporter un <b>"@"</b></font></center>';}
    									$regex = "/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i";
    									if (!preg_match($regex, $mail)) { $erreur[] = '<center><font color="red">Votre email n\'est pas valide</font></center>';}
    pouvez-vous m'aider...
    En effet quand je saisi des ; ou des \ le formulaire me valide l'email...

    c'est surtout cette partie qui ne fonctionne pas...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    	$regex = "/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i";
    									if (!preg_match($regex, $mail)) { $erreur[] = '<center><font color="red">Votre email n\'est pas valide</font></center>';}

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Essaie avec ce pattern pour voir si tu as toujours une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $regex = "#^[a-z0-9][-a-z0-9.]*@[-a-z0-9]+\.[-a-z0-9_.]+$#i";

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 911
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 911
    Points : 420
    Points
    420
    Par défaut
    désolé mais les ; ne sont pas testé?

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par sam01
    désolé mais les ; ne sont pas testé?
    on ne peut pas avoir des ; dans une adresse mail si?

  5. #5
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 911
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 911
    Points : 420
    Points
    420
    Par défaut
    pardon, je pense que je me suis mal exprimé.
    Je demande au fait à quel moment, le test des ; est effectué ?

    en efft dans le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $regex = "#^[a-z0-9][-a-z0-9.]*@[-a-z0-9]+\.[-a-z0-9_.]+$#i";
    je ne vois aucun test sur les ; alors qu'il faut les exclure...

  6. #6
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par sam01
    pardon, je pense que je me suis mal exprimé.
    Je demande au fait à quel moment, le test des ; est effectué ?

    en efft dans le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $regex = "#^[a-z0-9][-a-z0-9.]*@[-a-z0-9]+\.[-a-z0-9_.]+$#i";
    je ne vois aucun test sur les ; alors qu'il faut les exclure...
    Bah tu as toujours deux voies possibles : interdire un certain de caractères OU donner la liste des caractères possibles.
    Ici ta regexp indique la liste des caractères possibles dans ton adresse-email et les points-virgule ne sont pas dans la liste.

  7. #7
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 911
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 911
    Points : 420
    Points
    420
    Par défaut
    le souci c'est que mon code est le suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    $regex = "/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i";
    									if (!preg_match($regex, $mail)) { $erreur[] = '<center><font color="red">Votre email n\'est pas valide</font></center>';}
    si tu regardes bien j'ai mis un ! devant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    preg_match($regex, $mail)
    le souci c'est que mon code fait passer les ;...
    Comment éviter cela?

  8. #8
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par sam01
    le souci c'est que mon code fait passer les ;...
    Comment éviter cela?
    Tu peux essayer d'utiliser le masque proposé dans l'autre discussion que tu as ouverte a ce sujet? Je ne m'y connais pas trop en expression régulière.

  9. #9
    Membre averti Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Points : 305
    Points
    305
    Par défaut
    Salut,

    Moi j'ai fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function is_email($mail)
    	{
    		$motif1  = "^[[:alnum:]]([[:alnum:]\._-]{0,})[[:alnum:]]";
    		$motif1 .= "@";
    		$motif1 .= "[[:alnum:]]([[:alnum:]\._-]{0,})[\.]{1}([[:alpha:]]{2,})$";
    		$motif2 = "[\.]{2,}";
    		return (ereg($motif1, $mail) && !ereg($motif2, $mail));
    	}
    if(!is_email($email)){
    		...
    	}

    Sinon je l'ai refait en javascript avec une pattern de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$
    elle accepte les addresse de style : xxx@xxx.xx ou xxx.xxxx@xxx.xx ou xxx.xxx@xxx.xx.xx et surement d'autre

    Je te conseil de faire simple, c'est à dire de mettre dans ta pattern, exclusivement ce dont tu as besoin.

Discussions similaires

  1. Réponses: 17
    Dernier message: 09/05/2009, 21h54
  2. Test sur l'exitence d'un mail dans un dossier outlook 2003
    Par samson_02 dans le forum VBA Outlook
    Réponses: 10
    Dernier message: 13/02/2009, 13h49
  3. [Mail] envoi d'un mail via la fonction mail() de php
    Par Abac_Angelique dans le forum Langage
    Réponses: 1
    Dernier message: 09/02/2009, 23h46
  4. [Mail] Boucle sur fonction mail()
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2007, 22h26
  5. Réponses: 5
    Dernier message: 27/03/2006, 12h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo