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 :

problème avec preg_match() [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 95
    Par défaut problème avec preg_match()
    Bonjour,

    J'ai un formulaire dont je récupère les données dans mon contrôleur, je voudrais mettre une condition pour vérifier si le champ contient un caractère spécial du type &,<,# etc et afficher un message si tel est le cas ou bien ajouter les éléments du formulaire en BDD s'il n'y a pas de caractères spéciaux.

    Le problème est que les éléments sont toujours ajoutés en BDD, qu'il y ait des caractères spéciaux ou non

    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
    23
    24
          $pseudoVisiteur2 = $_GET['pseudo2'] ;
     
    		$mdpVisiteur2 = $_GET['mdp2'] ;
    		$mdpCrypt = md5($mdpVisiteur2) ;
     
    		$nomVisiteur = $_GET['nom'] ;
    		$prenomVisiteur = $_GET['prenom'] ;
    		$mailVisiteur = $_GET['mail'] ;
    		$date = date("d-m-Y") ;
     
    		$listeNoire = '/\#\&\~\{\(\[\|\"\)\=\}\+\°\*\/\!\§\:\;\?\<\>/' ;
     
                    if ((preg_match($listeNoire, $pseudoVisiteur2)) or (preg_match($listeNoire, $mdpVisiteur2)) or (preg_match($listeNoire, $nomVisiteur)) or (preg_match($listeNoire, $prenomVisiteur)))
    		{
    			echo'Ces champs ne doivent comporter que des lettres ou des chiffres ou - ou _' ;
    		}
     
                  else
    		{
    			$visiteur = new Visiteur($nomVisiteur, $prenomVisiteur, $pseudoVisiteur2, $mdpCrypt, $mailVisiteur, $date) ;
    			$bdd->ajoutVisiteur($visiteur) ;
     
    			echo'Vous êtes inscrit.' ;
    		}
    J'ai besoin d'aide svp.

  2. #2
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    Bonjour,

    pourquoi ne pas faire l'inverse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match('#^[a-zA-Z0-9]$#i', $var)
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    !preg_match("/[\/:*?«<>|°{}]/", $var)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 95
    Par défaut
    J'ai fait ce que vous m'avez dit et il ne se passe plus rien quand je valide mon formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(preg_match('#^[a-zA-Z0-9]$#i', $pseudoVisiteur2))
    {
    	echo'blabla' ;
    }

  4. #4
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Essaie comme ceci

    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
     
    $pseudoVisiteur2 = isset($_GET['pseudo2'])?$_GET['pseudo2']:'';
    $mdpVisiteur2    = isset($_GET['mdp2'])   ?$_GET['mdp2']   :'';
    $nomVisiteur     = isset($_GET['nom'])    ?$_GET['nom']    :'';
    $prenomVisiteur  = isset($_GET['prenom']) ?$_GET['prenom'] :'';
    $mailVisiteur    = isset($_GET['mail'])   ?$_GET['mail']   :'';
     
    if($pseudoVisiteur2!='' && $mdpVisiteur2!='' && $nomVisiteur!='' && $prenomVisiteur!='' &&$mailVisiteur !='' ){
    	$pattern = '/^\w+$/i';
    	if((!preg_match($pattern,$pseudoVisiteur2)) or (!preg_match($pattern,$mdpVisiteur2)) or (!preg_match($pattern,$nomVisiteur)) or (!preg_match($pattern,$prenomVisiteur))){
    		echo 'Ces champs ne doivent comporter que des lettres ou des chiffres ou - ou _';
    	}else{
    		$mdpCrypt = md5($mdpVisiteur2);
    		$date = date('d-m-Y');
    		$visiteur = new Visiteur($nomVisiteur, $prenomVisiteur, $pseudoVisiteur2, $mdpCrypt, $mailVisiteur, $date);
    		$bdd->ajoutVisiteur($visiteur);
    		echo'Vous êtes inscrit.';
    	}
    }else
    	echo 'Vous devez remplir tous les champs du formulaire.';
    ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 95
    Par défaut
    ça ne fonctionne toujours pas

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 95
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(preg_match('#[^a-zA-Z0-9]#', $pseudoVisiteur2))
    		{
    			echo'balbla';
    		}
    Ca veut bien dire que si ma variable contient autre chose que des lettres (majuscules ou minuscules) ou des chiffres, ma fonction renvoie "TRUE" et donc on écrit blabla ?

    J'arrive pas à comprendre pourquoi ça fonctionne pas. J'ai aucun message d'erreur, il ne se passe juste rien quand je valide mon formulaire...

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

Discussions similaires

  1. [RegEx] Problème d'extraction avec preg_match
    Par discochami dans le forum Langage
    Réponses: 2
    Dernier message: 25/02/2013, 19h57
  2. Problème avec fonction preg_match
    Par lebanner82 dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2012, 05h08
  3. [RegEx] problème avec preg_match
    Par thewaterkidny dans le forum Langage
    Réponses: 3
    Dernier message: 24/04/2008, 17h57
  4. [RegEx] problème avec preg_match
    Par othmane126 dans le forum Langage
    Réponses: 1
    Dernier message: 15/10/2007, 16h04
  5. Réponses: 23
    Dernier message: 24/05/2007, 11h32

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