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 mon formulaire


Sujet :

Langage PHP

  1. #21
    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
    je ne sais pas si tu as vu j'ai éditer mon message:
    Edit: problème: je rentre "ggggggggggg"(11g) comme identifiant ça me met :
    Cet identifiant est déjà utilisé ou ne correspond pas aux exigences de l'administrateur.
    ça me tue! et si j'enlève un "g", je mets "gggggggggg"(10g) ça marche!
    Aujourd'hui 17h27
    pour être sur d’être en php5 et pour le utf-8 tu peu mettre cela dans un .htaccess à la racine de ton projet
    ok donc le faite de faire ça :
    $titre=htmlentities($_POST['titre'],ENT_QUOTES,'UTF-8');
    $contenu=nl2br(htmlentities($_POST['contenu'],ENT_QUOTES,'UTF-8'));
    à chaque affichage ne sert strictement à a rien?!

  2. #22
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    ta amélioré ton code ou ta pris le miens ?

    dans les 2 cas donne l'ensemble qu'on voit ca...
    Conception / Dev

  3. #23
    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
    Je vais prendre le tiens mais du coup ma regex pour filtrer l'identifiant ne sert plus... Je px l inclure dedans ? ou appeler la fonction à partir de la class ?

    Et je px alors mettre mes messages d erreur également dans une class ?

    Les variables à l'interieur d'une class ne doivent-il pas être de type private ?
    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
    class FilterTest
    {
        public static function _call($a,$b)
        {
     
     
    		switch ($b){
     
    		case "STRING_IDENT":
    		$string = self::check_space($a);
    			if(strlen($string)<3 || strlen($string)>20 ){
    				$string = false;
    			}
    		case "STRING_PASSWORD":
     
    			if(strlen($string)<3 ){
    				$string = false;
    			}	
     		break;
     	    }
     
    	return $string;
        }
    	public static function check_space($string){
    		$temp=trim($string);
    		$string="";
    		for ( $i = 1 ; $i < strlen($temp) +1 ; $i ++ ){
    			if ( $temp[$i-1]==" " &&  $temp[$i]==" "){
    			}
    			else{
    			$string.= $temp[$i-1] ;
    			}
    		}
    		return $string;
    	}
     
    }

  4. #24
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    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
     
    case "STRING_IDENT":
    $string = $a;
    //la les tests que veux faire, et utiliser les messages d'erreur tu peu mettre ta regex a la place
    if(strlen($string)<3 || strlen($string)>10 ){
    $string = false;
    $erreur = 'Votre identifiant doit contenir entre 3 et 10 caractères';
    }
    break;
     
    //tu peu mettre d'autres tests
    case "STRING_PASSWORD":
    $string = $a;
    //la les tests que veux faire, et utiliser les messages d'erreur
    if(strlen($string)<3 || strlen($string)>5 ){
    $string = false;
    $erreur = 'Votre mot de passe contenir entre 3 et 5 caractères';
    }
    break;
     
    case "STRING_CP":
    $string = $a;
    //la les tests que veux faire, et utiliser les messages d'erreur
      if( !is_numeric($string) || strlen($string)!=5 ){
    $string = false;
    $erreur = 'Votre code postal est invalide';
    }
    break;
    //etc

    pour la définition des variables en private, pourquoi pas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class FilterTest
    {
       private $string;
       private $erreur;
    mais en fait c'est plus si on avais eu a utiliser $this->string, mais la c'est le pas cas ( enfin à regarder quand même)
    Conception / Dev

  5. #25
    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
    Je px faire ça ?
    Détailler un peux plus les erreurs ?
    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
     
    case "STRING_IDENT":
    $string = $a;
    //la les tests que veux faire, et utiliser les messages d'erreur tu peu mettre ta regex a la place
    if(strlen($string)<3 ){
    $string = false;
    $erreur = 'Votre identifiant doit contenir plus de 3 caractères';
    }
    if(strlen($string)>20 ){
    $string = false;
    $erreur = 'Votre identifiant doit contenir moins de 20 caractères';
    }
    break;
     
    case "STRING_PASSWORD":
    $string = $a;
    //la les tests que veux faire, et utiliser les messages d'erreur
    if(strlen($string)<3  ){
    $string = false;
    $erreur = 'Votre mot de passe doit contenir plus 3 caractères';
    }
    break;
     
    }
    un mot de passe doit il avoir un maximum ?
    comment afficher les erreurs ensuite ?

  6. #26
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    tu peu faire comme ca

    les erreurs sont stockées dans $result['nom_du_champs']['erreur'] et les valeurs dans $result['nom_du_champs']['value']
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $resultat = filter_input_array(INPUT_POST, $filtres); 
    print_r($resultat);
    echo $resultat['Identifiant']['erreur']; 
    echo $resultat['Identifiant']['value'];
    Si tu passe par un filtre php, tu obtiendra soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result['nom_du_champs']===false
    si c'est pas bon, sinon la valeur

    Pour les mdp, c'est toi qui vois, mais le max est pas obligatoire
    Conception / Dev

  7. #27
    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
    d'accord je vais voir ça pour les message d'erreur pour l'instant je te montre se que j'ai fais ><
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    <?php
    class FilterTest
    {
        public static function _call($a,$b)
        {
     
     
    	switch ($b)
    	{
     
    		case "STRING_IDENT":
    			$string = preg_match('#^[a-z0-9àáâãäçèéêëìíîïñðòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜŽÝ ._\'-]{3,20}$#i', $a) ? $a : false;
    			if($string == false){
    			$error='Cet identifiant est déjà utilisé ou ne correspond pas aux exigences de l\'administrateur.';
    			}
    			else{
    			$string = self::check_space($a);
    			if(strlen($string)<3 ){
    			$string = false;
    			$erreur = 'Votre identifiant doit contenir plus de 3 caractères';
    			}
    			elseif(strlen($string)>20 ){
    			$string = false;
    			$erreur = 'Votre identifiant doit contenir moins de 20 caractères';
    			}
    			else{
    			$string= $a;
    			}}
    		break;
     
    		case "STRING_PASSWORD":
    		$string = $a;
    			if(strlen($string)<3  ){
    			$string = false;
    			$erreur = 'Votre mot de passe doit contenir plus 3 caractères';
    			}
    			else{
    			$string= sha1('Gr@1n2s3l1' . md5($string) . 'gRaIn2$eL2');
    			}
    		break;
     
     
    	  return $string;
        }
    	public static function check_space($string){
    		$temp=trim($string);
    		$string="";
    		for ( $i = 1 ; $i < strlen($temp) +1 ; $i ++ ){
    			if ( $temp[$i-1]==" " &&  $temp[$i]==" "){
    			}
    			else{
    			$string.= $temp[$i-1] ;
    			}
    		}
    		return $string;
    	}
     
    }
     
    $options = array(
    			'Identifiant' => array(
    							  'filter' => FILTER_CALLBACK,//on crée un filtre. 
    							  'options' =>create_function('$a','return FilterTest::_call($a,"STRING_IDENT");') 
    								  ),
    			'Password' => array (
    						   'filter' => FILTER_CALLBACK, //on crée un filtre. 
    						   'options' => create_function('$a','return FilterTest::_call($a,"STRING_PASSWORD");')
    						        ),
    			'Email' => FILTER_VALIDATE_EMAIL //Valider l'adresse e-mail.
    );
     
    $resultat = filter_input_array(INPUT_POST, $options); 
     
    if($resultat != null)//Si le formulaire a bien été posté.
    { 	//Enregistrer des messages d'erreur perso.
    		$messageErreur = array(
    						  'Identifiant' => ,
    						  'Email' => 'Vous avez inséré une adresse email non valide.',
    						  'Password' => 'Le mot de passe n\'est pas valide, il doit comporter au minimum 3 caractères.'
    							  );
     
        $nbrErreurs = 0; 
    ?>		
    		<p>Les erreurs suivantes se sont produites pendant votre inscription :</p>
    	<ul>
    <?php
    	foreach($options as $cle => $valeur)  //Parcourir tous les champs voulus.
    	{	
    		if(empty($_POST[$cle])) //Si le champ est vide.
    		{ 
                echo '<li> Veuillez compléter le champ requis « ' . $cle . ' ».</li><br/>';
                $nbrErreurs++;
    		}
            elseif($resultat[$cle] == false) //S'il n'est pas valide.
    		{ 
                echo '<li>' .$messageErreur[$cle] . '</li><br/>';
                $nbrErreurs++;
    		}
    	}
    ?>  </ul>
    <?php	if($nbrErreurs == 0)
    		{
    			echo 'Bonjour ' . $resultat['Identifiant'] . ' !<br/> ';
    			echo 'Ton adresse de messagerie est bien ' . $resultat['Email'] . '.<br/>';
    			echo 'Ton mot de passe est ' . $resultat['Password'] . '.<br/>';
    		}
    }	
    else
    {
    	echo 'Vous n\'avez rien posté.';
    }
    ?>

  8. #28
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    ligne 43 dans return , faut mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return array('value'=>$string,'erreur'=>$erreur);
    à la place de


    j'avais fait une modif, pour la gestion des erreurs dans le dernier exemple complet
    Conception / Dev

  9. #29
    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
    Merci j'avais pas vu, mais j'ai toujours cette erreur :
    ( ! ) Parse error: syntax error, unexpected T_PUBLIC in C:\wamp\www\test\cible.php on line 45

  10. #30
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    case "STRING_IDENT":
    $string = preg_match('#^[a-z0-9àáâãäçèéêëìíîïñðòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜŽÝ ._\'-]{3,20}$#i', $a) ? $a : false;
    if($string == false){
    $error='Cet identifiant est déjà utilisé ou ne correspond pas aux exigences de l\'administrateur.';
    }
    else{
    $string = self::check_space($a);
    if(strlen($string)<3 ){
    $string = false;
    $erreur = 'Votre identifiant doit contenir plus de 3 caractères';
    }
    elseif(strlen($string)>20 ){
    $string = false;
    $erreur = 'Votre identifiant doit contenir moins de 20 caractères';
    }
    else{
    $string= $a;
    }}
    break;
    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
     
    case "STRING_IDENT":
    $string = self::check_space($a);
    $string = preg_match('#^[a-z0-9àáâãäçèéêëìíîïñðòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜŽÝ ._\'-]{3,20}$#i', $string) ? $string : false;
    if($string == false){
    $error='Cet identifiant est déjà utilisé ou ne correspond pas aux exigences de l\'administrateur.';
    }
    else if(strlen($string)<3 ){
    $string = false;
    $erreur = 'Votre identifiant doit contenir plus de 3 caractères';
    }
    else if(strlen($string)>20 ){
    $string = false;
    $erreur = 'Votre identifiant doit contenir moins de 20 caractères';
    }
    break;
    Conception / Dev

  11. #31
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    oubli pas de fermer le switch apres le dernier break

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    switch($a){
    
    case 'test':
    
    
    break;
    
    }
    Conception / Dev

  12. #32
    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
    j'ai toujours une erreur ligne 40, ( ! ) Notice: Undefined variable: erreur in C
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    <?php
    class FilterTest
    {
        public static function _call($a,$b)
        {
     
     
    	 switch ($b)
    	 {
     
    		case "STRING_IDENT":
    			$string = self::check_space($a);
    			$string = preg_match('#^[a-z0-9àáâãäçèéêëìíîïñðòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜŽÝ ._\'-]{3,20}$#i', $string) ? $string : false;
     
    			if($string == false){
    			$error='Cet identifiant est déjà utilisé ou ne correspond pas aux exigences de l\'administrateur.';
    			}
    			else if(strlen($string)<3 ){
    			$string = false;
    			$erreur = 'Votre identifiant doit contenir plus de 3 caractères';
    			}
    			else if(strlen($string)>20 ){
    				$string = false;
    				$erreur = 'Votre identifiant doit contenir moins de 20 caractères';
    			}
    			break;
     
    		case "STRING_PASSWORD":
    			$string = $a;
    			if(strlen($string)<3  ){
    			$string = false;
    			$erreur = 'Votre mot de passe doit contenir plus 3 caractères';
    			}
    			else{
    			$string= sha1('Gr@1n2s3l1' . md5($string) . 'gRaIn2$eL2');
    			}
    		break;
     
    	  }
    	  return array('value'=>$string,'erreur'=>$erreur);
        }
    	public static function check_space($string){
    		$temp=trim($string);
    		$string="";
    		for ( $i = 1 ; $i < strlen($temp) +1 ; $i ++ ){
    			if ( $temp[$i-1]==" " &&  $temp[$i]==" "){
    			}
    			else{
    			$string.= $temp[$i-1] ;
    			}
    		}
    		return $string;
    	}
     
    }
     
    $options = array(
    			'Identifiant' => array(
    							  'filter' => FILTER_CALLBACK,//on crée un filtre. 
    							  'options' =>create_function('$a','return FilterTest::_call($a,"STRING_IDENT");') 
    								  ),
    			'Password' => array (
    						   'filter' => FILTER_CALLBACK, //on crée un filtre. 
    						   'options' => create_function('$a','return FilterTest::_call($a,"STRING_PASSWORD");')
    						        ),
    			'Email' => FILTER_VALIDATE_EMAIL //Valider l'adresse e-mail.
    );
     
    $resultat = filter_input_array(INPUT_POST, $options); 
     
    if($resultat != null)//Si le formulaire a bien été posté.
    { 	//Enregistrer des messages d'erreur perso.
    		$messageErreur = array(
    						  'Identifiant' =>  $resultat['Identifiant']['erreur'] ,
    						  'Email' => 'Vous avez inséré une adresse email non valide.',
    						  'Password' => 'Le mot de passe n\'est pas valide, il doit comporter au minimum 3 caractères.'
    							  );
     
        $nbrErreurs = 0; 
    ?>		
    		<p>Les erreurs suivantes se sont produites pendant votre inscription :</p>
    	<ul>
    <?php
    	foreach($options as $cle => $valeur)  //Parcourir tous les champs voulus.
    	{	
    		if(empty($_POST[$cle])) //Si le champ est vide.
    		{ 
                echo '<li> Veuillez compléter le champ requis « ' . $cle . ' ».</li><br/>';
                $nbrErreurs++;
    		}
            elseif($resultat[$cle] == false) //S'il n'est pas valide.
    		{ 
                echo '<li>' .$messageErreur[$cle] . '</li><br/>';
                $nbrErreurs++;
    		}
    	}
    ?>  </ul>
    <?php	if($nbrErreurs == 0)
    		{
    			echo 'Bonjour ' . $resultat['Identifiant']['value'] . ' !<br/> ';
    			echo 'Ton adresse de messagerie est bien ' . $resultat['Email'] . '.<br/>';
    			echo 'Ton mot de passe est ' . $resultat['Identifiant']['value'] . '.<br/>';
    		}
    }	
    else
    {
    	echo 'Vous n\'avez rien posté.';
    }
    ?>
    je sais pas si c 'est cette façon qu'il faut faire pour traiter les valeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($nbrErreurs == 0)
    		{
    			echo 'Bonjour ' . $resultat['Identifiant']['value'] . ' !<br/> ';
    			echo 'Ton adresse de messagerie est bien ' . $resultat['Email'] . '.<br/>';
    			echo 'Ton mot de passe est ' . $resultat['Password']['value'] . '.<br/>';
    		}
    D'ailleur mettre une ligne $resultat['Identifiant']['erreur'] pour l'identifiant ok vu qu'il y a plusieurs erreur à traiter, mais pour le mot de passe sachant qu 'il y a uniquement une erreur qui peux se produire, le fait qu'il rentre un nombre de caractère inferieur a 3:
    au lieu de faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    case "STRING_PASSWORD":
    			$string = $a;
    			if(strlen($string)<3  ){
    			$string = false;
    			$erreur = 'Votre mot de passe doit contenir plus 3 caractères';
    			}
    			else{
    			$string= sha1('Gr@1n2s3l1' . md5($string) . 'gRaIn2$eL2');
    			}
    pour ensuite l'afficher comme ça:
    'Password' => $resultat['Password']['erreur'] ,

    autant faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    case "STRING_PASSWORD":
    			$string = $a;
    			if(strlen($string)<3  ){
    			$string = false;
    			}
    			else{
    			$string= sha1('Gr@1n2s3l1' . md5($string) . 'gRaIn2$eL2');
    			}
    et afficher l'unique erreur comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $messageErreur = array(
    						  'Identifiant' =>  $resultat['Identifiant']['erreur'] ,
    						  'Email' => 'Vous avez inséré une adresse email non valide.',
    						  'Password' => 'Le mot de passe n\'est pas valide, il doit comporter au minimum 3 caractères.'
    							  );
    nan ?

  13. #33
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    Tu as mal repris mon exemple :

    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
       public static function _call($a,$b)
        {
     
    	$string = self::check_space($a);
    	$erreur = false; // parce que si ya pas d'erreur $erreur existe pas
             switch ($b){
    		
    		case "STRING_IDENT":
     
    			if(strlen($string)<3 || strlen($string)>10 ){
    				$string = false;
    				$erreur = 'Votre identifiant doit contenir entre 3 et 10 caractères';
    			}
     		break;
    
    	}	 
    	return array('value'=>$string,'erreur'=>$erreur);
        }

    Pour la gestion des vues du formulaire et des erreurs, en effet la c toi qui voit, mais le but pour moi c'est de centraliser la gestion ( test / génération des messages), qui me parrait plus simple

    Note : Pour les erreurs par exemple ,A la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $erreur = 'Votre identifiant doit contenir entre 3 et 10 caractères';
    tu peu aussi faire un truc comme ca

    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
    $erreur = 'err1';
     
    $listeErreur = array (
    'fr' => array(
    'err1' =>'Votre identifiant doit contenir entre 3 et 10 caractères'
    ),
    'en' => array(
    'err1' =>'Bad Identifiant'
    );
     
    $idErreur = $resultat['monChamps']['erreur'];
    $lang='fr';
    if($idErreur!== false ){
    echo $listeErreur[$lang][$idErreur];
    }
    Conception / Dev

  14. #34
    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
    J'ai plus d'erreur en effet mais cette fois la fonction "check_space" ne fait pas son boulot, je px rentrer " g"(2espaces +g),et il m'affiche ça tranquilement, ou plutot il m'affiche rien, mais il me fait "bonjour " et quand je mets plus de 3 caractères là il m'affiche la totalité des caractères! ><
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    <?php
    class FilterTest
    {
        public static function _call($a,$b){
     
    	$string = self::check_space($a);
    	$erreur = false;
     
    	 switch ($b){
     
    		case "STRING_IDENT":
    			$string = preg_match('#^[a-z0-9àáâãäçèéêëìíîïñðòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜŽÝ ._\'-]{3,20}$#i', $string) ? $string : false;
     
    			if($string == false){
    			$error='Cet identifiant est déjà utilisé ou ne correspond pas aux exigences de l\'administrateur.';
    			}
    			else if(strlen($string)<3 ){
    			$string = false;
    			$erreur = 'Votre identifiant doit contenir plus de 3 caractères';
    			}
    			else if(strlen($string)>20 ){
    				$string = false;
    				$erreur = 'Votre identifiant doit contenir moins de 20 caractères';
    			}
    			break;
     
    		case "STRING_PASSWORD":
    			$string = $a;
    			if(strlen($string)<3  ){
    			$string = false;
    			$erreur = 'Votre mot de passe doit contenir plus 3 caractères';
    			}
    			else{
    			$string= sha1('Gr@1n2s3l1' . md5($string) . 'gRaIn2$eL2');
    			}
    		break;
     	 }
     
    	  return array('value'=>$string,'erreur'=>$erreur);
        }
     
    	public static function check_space($string){
    		$temp=trim($string);
    		$string="";
    		for ( $i = 1 ; $i < strlen($temp) +1 ; $i ++ ){
    			if ( $temp[$i-1]==" " &&  $temp[$i]==" "){
    			}
    			else{
    			$string.= $temp[$i-1] ;
    			}
    		}
    		return $string;
    	}
     
    }
     
    $options = array(
    			'Identifiant' => array(
    							  'filter' => FILTER_CALLBACK,//on crée un filtre. 
    							  'options' =>create_function('$a','return FilterTest::_call($a,"STRING_IDENT");') 
    								  ),
    			'Password' => array (
    						   'filter' => FILTER_CALLBACK, //on crée un filtre. 
    						   'options' => create_function('$a','return FilterTest::_call($a,"STRING_PASSWORD");')
    						        ),
    			'Email' => FILTER_VALIDATE_EMAIL //Valider l'adresse e-mail.
    );
     
    $resultat = filter_input_array(INPUT_POST, $options); 
     
    if($resultat != null)//Si le formulaire a bien été posté.
    { 	//Enregistrer des messages d'erreur perso.
    		$messageErreur = array(
    						  'Identifiant' =>  $resultat['Identifiant']['erreur'] ,
    						  'Email' => 'Vous avez inséré une adresse email non valide.',
    						  'Password' => $resultat['Password']['erreur']
    							  );
     
        $nbrErreurs = 0; 
    ?>		
    		<p>Les erreurs suivantes se sont produites pendant votre inscription :</p>
    	<ul>
    <?php
    	foreach($options as $cle => $valeur)  //Parcourir tous les champs voulus.
    	{	
    		if(empty($_POST[$cle])) //Si le champ est vide.
    		{ 
                echo '<li> Veuillez compléter le champ requis « ' . $cle . ' ».</li><br/>';
                $nbrErreurs++;
    		}
            elseif($resultat[$cle] == false) //S'il n'est pas valide.
    		{ 
                echo '<li>' .$messageErreur[$cle] . '</li><br/>';
                $nbrErreurs++;
    		}
    	}
    ?>  </ul>
    <?php	if($nbrErreurs == 0)
    		{
    			echo 'Bonjour ' . $resultat['Identifiant']['value'] . ' !<br/> ';
    			echo 'Ton adresse de messagerie est bien ' . $resultat['Email'] . '.<br/>';
    			echo 'Ton mot de passe est ' . $resultat['Password']['value'] . '.<br/>';
    		}
    }	
    else
    {
    	echo 'Vous n\'avez rien posté.';
    }
    ?>

  15. #35
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    c normal !

    (g+espaces+espaces+g) // je supprime les espaces doubles donne
    (g+espaces+g) // donne 3 caractères

    non ?
    Conception / Dev

  16. #36
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    c pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $error='Cet identifiant est déjà utilisé ou ne correspond pas aux exigences de l\'administrateur.';
    c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $erreur='Cet identifiant est déjà utilisé ou ne correspond pas aux exigences de l\'administrateur.';
    Conception / Dev

  17. #37
    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 normal !

    (g+espaces+espaces+g) // je supprime les espaces doubles donne
    (g+espaces+g) // donne 3 caractères

    non ?
    ui tout à fait mais " g" (espace + espace +g), ça donne "g" (juste g)nan ?et la ça devrait me mettre le message d'erreur et pourtant non!
    même si je tape en dessous de 3 caractères ça me met Bonjour ! (bonjour et un blanc) au lieu de me mettre le message d'erreur!

  18. #38
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $error='Cet identifiant est déjà utilisé ou ne correspond pas aux exigences de l\'administrateur.';
    c

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $erreur='Cet identifiant est déjà utilisé ou ne correspond pas aux exigences de l\'administrateur.';
    Conception / Dev

  19. #39
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    de plus si tu regarde ta regex, tu verifie aussi que 3>count(var) >20, donc les deux autres if ne seront jamais vu

    sauf si tu met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $string = preg_match('#^[a-z0-9àáâãäçèéêëìíîïñðòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜŽÝ ._\'-]{0,21}$#i', $string) ? $string : false;
    Conception / Dev

  20. #40
    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
    par contre quand je mets une adresse non valide ça me met bien le message d'erreur, mais ça le fait pas pour le mot de passe et l'identifiant, ça doit venir de la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Identifiant' =>  $resultat['Identifiant']['erreur']
    'Password' => $resultat['Password']['erreur']
    c pas

    $error='Cet identifiant est déjà utilisé ou ne correspond pas aux exigences de l\'administrateur.';

    c

    $erreur='Cet identifiant est déjà utilisé ou ne correspond pas aux exigences de l\'administrateur.';
    ui merci , ça fait 2 jours que je suis sur ce ***** de formulaire >< je suis un peu a l'ouest et je vais aller apprendre le php orienté objet après pour être à l'aise avec ça!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Problème avec mon champ date dans le formulaire
    Par PetitChris dans le forum IHM
    Réponses: 4
    Dernier message: 28/08/2014, 09h37
  2. [HTML 4.0] Problème avec mon formulaire
    Par Diamond26 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/10/2012, 23h39
  3. Problème avec mon formulaire
    Par sisidu08 dans le forum Langage
    Réponses: 0
    Dernier message: 04/07/2012, 18h45
  4. Problème avec mon formulaire
    Par didigue dans le forum Langage
    Réponses: 2
    Dernier message: 05/10/2009, 18h38
  5. Réponses: 3
    Dernier message: 21/06/2006, 19h48

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