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 :

Utilisation de preg_match [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Points : 95
    Points
    95
    Par défaut Utilisation de preg_match
    bonjour

    j'ai un première problème suite a problème de spam incessant j'ai décider de changer le système

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    elseif((preg_match("#viagra|^cialis$|cialis</a>|levitra|<a | http:// | www |<img #i" , $message)) == true)
       {
       $erreur[] = 'spam interdit';
       }
    maitenant si je met une adresse donc http ou www ben le code ne réagit pas :s

    un autre problème le membre peu s'il veut laisser sont adresse mail
    mais avec la conditions
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    elseif(isset($email)) 
     {
     if(strchr($email,"@") == FALSE)
     {
    		$erreur[] = 'mettre une vrai adresse mail';
    la nous somme obliger de mettre une adresse mail je ne comprend pas pourquoi ???

    merci de m'aider schats

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 44
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Je pense que vous avez simplement oublié les anti-slash ainsi que les paranthèses. J'ai testé le code suivant, et il fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    elseif((preg_match("#(viagra|^cialis$|cialis<\/a>|levitra|<a|http:\/\/|www|<img)#i" , $message)) == true)
       {
       $erreur[] = 'spam interdit';
       }
    Pour votre deuxième problème, le script vérifie la présence du '@' dans le cas où le champs 'email' est rempli grâce à la fonction isset(); donc si le champs 'email' n'est pas rempli, il ne vérifie rien .

    Nico.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Points : 95
    Points
    95
    Par défaut
    bonjours ,
    Pour votre deuxième problème, le script vérifie la présence du '@' dans le cas où le champs 'email' est rempli grâce à la fonction isset(); donc si le champs 'email' n'est pas rempli, il ne vérifie rien .
    voila c'est ca que je veut mais la il me met
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $erreur[] = 'mettre une vrai adresse mail';
    même si on a pas mit d'adresse mail

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par Nicolas N.
    Je pense que vous avez simplement oublié les anti-slash ainsi que les paranthèses. J'ai testé le code suivant, et il fonctionne
    Les parenthèses sont inutiles ici car elles n'ont aucun rôle à jouer, que ce soit pour la capture ou dans l'expression. Les slashs n'ont pas non plus besoin d'être échappés pour la simple et bonne raison que ce ne sont ni des métacaractères ni utilisés comme séparateur.

    Citation Envoyé par schats
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    elseif((preg_match("#viagra|^cialis$|cialis</a>|levitra|<a | http:// | www |<img #i" , $message)) == true)
       {
       $erreur[] = 'spam interdit';
       }
    Les espaces sont volontaires ?

    Citation Envoyé par schats
    un autre problème le membre peu s'il veut laisser sont adresse mail
    mais avec la conditions
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    elseif(isset($email)) 
     {
     if(strchr($email,"@") == FALSE)
     {
    		$erreur[] = 'mettre une vrai adresse mail';
    La variable $email elle sort d'où ? N'y aurait-il pas confusion avec la fonction empty ? Je pense qu'on peut également trouver mieux que strchr (une expression régulière par exemple) ...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Points : 95
    Points
    95
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    elseif((preg_match("#viagra|^cialis$|cialis</a>|levitra|<a | http:// | www |<img #i" , $message)) == true)
       {
       $erreur[] = 'spam interdit';
       }
    non les espace sont volontaire enfin c'est pour voir un peu clair :s

    la variable email est
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(!empty($_POST) ) // le form a été soumis
    {
      // servira à enregistrer les messages pour les erreurs rencontrées
       $_POST = array_map('trim', $_POST);
       $erreur = array();
     
       $pseudo = mysql_real_escape_string($_POST['pseudo']);
       $email = mysql_real_escape_string($_POST['email']);
       $message = mysql_real_escape_string($_POST['message']);

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par schats
    non les espace sont volontaire enfin c'est pour voir un peu clair :s
    Justement sans l'option x vos espaces seront considérés comme faisant partie du masque !

    sera toujours vrai à partir du moment où le formulaire où est défini le champ email est soumis ...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Points : 95
    Points
    95
    Par défaut
    euh alors comment faire ???

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par schats
    euh alors comment faire ???
    Je vous l'ai dit

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    elseif((preg_match("#viagra|^cialis$|cialis</a>|levitra|<a | http:// | www |<img #i" , $message)) == true)
       {
       $erreur[] = 'spam interdit';
       }
    vous supprimez les espaces sans signification ou vous utilisez l'option x.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif(isset($email))
    a priori vous devez remplacer isset par !empty

  9. #9
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    a partir du moment ou tu fais un
    $toto = quelquechose
    $toto sera considéré comme défini. Meme si ton quelque chose est une chaine vide, NULL ou FALSE.

    pour tester la chaine vide, utilise empty()
    pour tester NULL utilise is_null()
    et pour false, un if suffit (puisque c'est déja un booléen).

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

Discussions similaires

  1. utilisation de preg_match
    Par TroisR dans le forum Langage
    Réponses: 4
    Dernier message: 04/06/2015, 10h13
  2. Utilisation de preg_match
    Par djedje-08 dans le forum Langage
    Réponses: 2
    Dernier message: 21/03/2015, 17h56
  3. Utilisation de preg_match
    Par djedje-08 dans le forum Langage
    Réponses: 2
    Dernier message: 24/02/2014, 05h35
  4. [RegEx] utilisation de preg_match pour tester un nom de dossier valide
    Par maxeur dans le forum Langage
    Réponses: 3
    Dernier message: 09/10/2012, 15h24
  5. [RegEx] Utilisation de preg_match
    Par Neuromancien2 dans le forum Langage
    Réponses: 3
    Dernier message: 04/10/2009, 19h39

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