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 :

FILTER_VALIDATE_EMAIL ne filtre pas bien [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut FILTER_VALIDATE_EMAIL ne filtre pas bien
    Bonjour à tous,

    J'ai bien PHP 5.2.12 installé.

    Voici 2 tests :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $email = "marc@somehostcom";
     
    if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
    {
     echo $email." est invalide";
    }
    else
    {
     echo $email." est valide";
    }
    Me sort que email est valide alors qu'il manque le "." dans le domaine !
    Si je vire @, ça sort "invalide", effectivement.

    si j'affiche filter_list(), j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Array
    (
        [0] => int
        [1] => boolean
        [2] => float
        [3] => validate_regexp
        [4] => validate_url
        [5] => validate_email
        [6] => validate_ip
        [7] => string
        [8] => stripped
        [9] => encoded
        [10] => special_chars
        [11] => unsafe_raw
        [12] => email
        [13] => url
        [14] => number_int
        [15] => number_float
        [16] => magic_quotes
        [17] => callback
    )
    Où est l'erreur ?
    php.ini ?
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    FILTER_VALIDATE_EMAIL ne filtre pas uniquement des adresses internet.
    par exemple administrateur@localhost est valide.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    salut,
    c'est normal, cette validation prend en compte les adresses du type admin@localhost.

    si tu veux pousser la vérification plus loin tu dois utiliser une expression régulière.

  4. #4
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Merci de vos réponses...mais alors, je lis dans les tutos (sur developpez.net, notamment) que les filtres remplacent avantageusement les expressions régulières... ce n'est donc pas tout à fait juste ? Il faut les deux ?

  5. #5
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Citation Envoyé par renaud26
    ...les filtres remplacent avantageusement les expressions régulières...
    oui sont moins couteux en terme des ressources mais ils sont beaucoup trop générique. Pour certaines situations mieux vaut une regExp.

    dans ton cas il te faut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]
    +\.[a-zA-Z.]{2,5}$
    comme regExp.

  6. #6
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par Thes32 Voir le message
    oui sont moins couteux en terme des ressources mais ils sont beaucoup trop générique. Pour certaines situations mieux vaut une regExp.

    dans ton cas il te faut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]
    +\.[a-zA-Z.]{2,5}$
    comme regExp.
    Moi, j'aime bien la RFC822, mais c'est peut-être abuser...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
    http://www.regular-expressions.info/email.html

  7. #7
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Citation Envoyé par s.n.a.f.u
    Moi, j'aime bien la RFC822, mais c'est peut-être abuser...
    juste à voir, ça me donne le vertige !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 14h43
  2. [PERL] un grep qui ne fonctionne pas bien
    Par LE NEINDRE dans le forum Langage
    Réponses: 6
    Dernier message: 03/11/2005, 16h37
  3. [REQUETE][IMBRIQUEE] Bien ou pas bien?
    Par fabszn dans le forum Langage SQL
    Réponses: 31
    Dernier message: 21/04/2005, 10h57
  4. J'ai un P4 512 de ram mais ne fct pas bien
    Par savoir dans le forum Composants
    Réponses: 9
    Dernier message: 28/03/2005, 20h14
  5. [THREAD][DAEMON]Pas bien compris....
    Par XristofGreek dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 24/09/2004, 13h28

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