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 :

Probleme avec les filtres


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 110
    Points : 49
    Points
    49
    Par défaut Probleme avec les filtres
    Bonjour tout le monde!
    Si une personne pouvait me donner un coup de pouce, bah ce serait avec plaisir!

    Je m'explique je rencontre un petit 'problème' avec le filtre "FILTER_CALLBACK" qui permet de créer son propre filtre, j'ai cette erreur:
    ( ! ) Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in C:\wamp\www\test\cible.php on line 13
    L'erreur se situe également a la ligne 13 ci-dessous:
    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
    <?php
    function validerEmail($EmailATester) {
        //Retourne le numéro s'il est valide, sinon false.
        return preg_match('`#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#`', $EmailATester) ? $EmailATester : false;
    }
     
    $options = array(
        'identifiant' => FILTER_SANITIZE_STRING, //Enlever les balises.
    	'email' => array(
            'filter' => FILTER_CALLBACK,
    	'options' => 'validerEmail'
    			     )	
    	'mot_de_passe' => FILTER_SANITIZE_SPECIAL_CHARS,
    	'age' => array(
            'filter' => FILTER_VALIDATE_INT, //Valider l'entier.
            'options' => array(
                'min_range' => 0, 
    	    'max_range' => 120 
    			        )
    			    ) 
    );
     
    $resultat = filter_input_array(INPUT_POST, $options); ?>
    Je sais qu'il y a déja une fonction "FILTER_VALIDATE_EMAIL" pour savoir si l'adresse mail à la bonne forme, mais celle-ci vérifie juste si elle comporte le point et l'arobase. Mais je chipote un peux ^^ sachant qu'une adresse mail doit comporter minimum 2 caractères après l'arobase et 2 caractères après le point je voulais créer ma propre regex!

    Je voulais aussi savoir si mes autres filtres étaient bien adapté "FILTER_SANITIZE_SPECIAL_CHARS" pour le mot de passe et "FILTER_SANITIZE_STRING" pour l'identifiant!

    Si une âme charitable pouvait me renseigner ça serait super sympa!

    Merci d'avance

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    fait direct un FILTER_VALIDATE_REGEXP

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 110
    Points : 49
    Points
    49
    Par défaut
    fait direct un FILTER_VALIDATE_REGEXP
    Merci d'avoir répondu, je ne connais pas cette fonction je vais voir ça tout de suite, mais j'aimerais bien savoir se qui cloche dans mon code aussi... ><
    et savoir si les autres filtres étaient adapté sachant qu'il faut aussi que je compte le nombre de caractères, par exemple que l'identifiant soit compris entre 5 et 20 caractères.Donc savoir si je garde les filtres que j'ai mis ("FILTER_SANITIZE_SPECIAL_CHARS" et "FILTER_SANITIZE_STRING" )et en suite je mets une 2eme condition à la suite pour testé si le nombre de caractères est compris entre ces 2 valeurs ou si je crée des filtres personnalisés comme avec l'email et testé directement avec des regex si jamais c'est possible pour voir si il y a un nombre de caractères valide!

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    manque une virgule ligne 12 après )

  5. #5
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 110
    Points : 49
    Points
    49
    Par défaut
    manque une virgule ligne 12 après )
    Ah exacte... Merci je n'ai plus d'erreur mais même avec une adresse valide ça me met que l'adresse n'est pas valide, mais ce n'est pas grave je vais voir ça de mon côté.
    Et pour mes autres questions tu me conseils quoi ? faire une 2eme conditions après les filtres pour tester le nombre de caractères ou bien faire une regex comme avec l'email et tester si c'est possible le nombre de caractères à l'intérieur de la regex et définir des limites (par exemple le pseudo entre 5 et 20 caractères).

    Merci de m'avoir aidé

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    c'est pas évidant la gestion des formulaires, je pense que le plus simple est de faire un callback pour chaque type

  7. #7
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 110
    Points : 49
    Points
    49
    Par défaut
    c'est pas évidant la gestion des formulaires, je pense que le plus simple est de faire un callback pour chaque type
    Ouai j'ai toujours un problème..
    problème même avec une adresse valide, ça me met que l'adresse n'est pas valide et pour cause avec un print_r je me rend compte qu'il n'y a rien dans l'email!
    Je mets tout le code:
    formulaire.php
    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
    <form action="cible.php" method="post">
     
    <label for="liaison">Identifiant:</label>
    <input type="text" name="identifiant" id="liaison" /><br/>
     
    <label for="liaison1">Mot de passe:</label><br />
    <input type="text" name="mot_de_passe" id="liaison1" />
     
    <label for="liaison2">Confirmez votre mot de passe:</label><br />
    <input type="text" name="mot_de_passe_confirm"  id="liaison2" />
     
    <label for="liaison3">Adresse email:</label><br />
    <input type="text" name="email" id="liaison3"  />
     
    <label for="liaison4">Confirmez votre adresse email:</label><br />
    <input type="text" name="email_confirm" id="liaison4"  />
     
    <label for="liaison5">&Acirc;ge :</label><br /> 
    <input type="text" name="age" id="liaison5" /><br /> 
     
    <input type="submit" value="Envoyer"/>
    </form>
    et la page cible.php:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <?php
    function validerEmail($EmailATester) {
     
        //Retourne le numéro s'il est valide, sinon false.
        return preg_match('`#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#`', $EmailATester) ? $EmailATester : false;
    }
     
    $options = array(
    	'email' => array(
                    'filter' => FILTER_CALLBACK,
    		'options' => 'validerEmail'
    		        ),	
            'identifiant' => FILTER_SANITIZE_STRING, //Enlever les balises.
    	'mot_de_passe' => FILTER_SANITIZE_SPECIAL_CHARS, //Garde les balises, mais ne les interprètes pas.
    	'age' => array(
                     'filter' => FILTER_VALIDATE_INT, //Valider l'entier.
                     'options' => array(
                             'min_range' => 0, 
    	                 'max_range' => 120 
    			           )
    		       ) );
     
    $resultat = filter_input_array(INPUT_POST, $options);
     
    print_r($resultat);
     
    if($resultat != null) { //Si le formulaire a bien été posté.
        //Enregistrer des messages d'erreur perso.
        $messageErreur = array(
            'email' => 'L\'adresse de messagerie n\'est pas valide.',
    	'mot_de_passe' => 'Le mot de passe n est pas valide.',
            'age' => 'Votre &acirc;ge n \'est pas valide.'
                               );
     
        $nbrErreurs = 0;
     
    print_r($resultat);
     
        foreach($options as $cle => $valeur) { //Parcourir tous les champs voulus.
            if(empty($_POST[$cle])) { //Si le champ est vide.
                echo 'Veuillez remplir le champ ' . $cle . '.<br/>';
                $nbrErreurs++;
            }
            elseif($resultat[$cle] == false) { //S'il n'est pas valide.
                echo $messageErreur[$cle] . '<br/>';
                $nbrErreurs++;
            }
        }
     
        if($nbrErreurs == 0) { //Si les champs sont remplis et que les données sont valides.
            echo 'Bonjour ' . $resultat['identifiant'] . ' !<br/> ';
    	echo 'Ton adresse de messagerie est : ' . $resultat['email'] . ' ?<br/>';
    	echo 'Ton mot de passe est : ' . $resultat['mot_de_passe'] . ' <br/>';
            echo 'Tu as ' . $resultat['age'] . ' ans !';
        }
    }
    else {
        echo 'Vous n\'avez rien posté.';
    }
    ?>
    et les me donnent:
    Array ( [email] => [identifiant] => loulou [mot_de_passe] => ad56vA [age] => 28 ) Array ( [email] => [identifiant] => loulou [mot_de_passe] => ad56vA [age] => 28 ) L'adresse de messagerie n'est pas valide.
    Je ne comprends pas pourquoi l'email est vide

    Si on peut me mettre sur la piste..

    Merci d'avance

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    ton regex est faux, y'a deux délimiteur, `et #
    c'est l'un ou l'autre, je te déconseille fortement d’utiliser ` qui est l’opérateur d’exécution de PHP

  9. #9
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 110
    Points : 49
    Points
    49
    Par défaut
    ton regex est faux, y'a deux délimiteur, `et #
    c'est l'un ou l'autre, je te déconseille fortement d’utiliser ` qui est l’opérateur d’exécution de PHP
    Aie aie aie il est temps que j'aille dormir ><

    Merci a toi pour tes réponses rapides et précises!

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

Discussions similaires

  1. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  2. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  3. [langage] probleme avec les listes dans des listes
    Par pqmoltonel dans le forum Langage
    Réponses: 7
    Dernier message: 27/04/2004, 12h32
  4. Problem avec les *.AVI sur les panels
    Par NaDiA_SoFt dans le forum C++Builder
    Réponses: 3
    Dernier message: 31/08/2003, 22h50
  5. probleme avec les processus
    Par saidi dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/02/2003, 00h18

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