Page 1 sur 1

TP : Espace membre avec erreur personnalisé (utiliser des f)

Posté : 03 août 2014, 20:40
par del_samples
salut a tous !

j'ai un gros problème j'arrive pas a utiliser des fonctions filtre dans mon fichier

c'est un peu vague je peu pas expliquer tout les méthodes qu l'ai imaginée

lorsque j'utilise des variables comme paramètre dans mes fonction il survient un des erreur et lorsque je commence par vérifier leur existantes elles ne sont pas utilisées par le code
//les option pour verification
$options = array('pseudo' => filter_var($pseudo, FILTER_CALLBACK, array('options' => 'validerPseudo')),
                 'email' => filter_var($email, FILTER_CALLBACK, array('options' => 'validerEmail')),
                 'pass' => filter_var($pass, FILTER_CALLBACK, array('options' => 'validerPass')),
                 'pass_confirm' => filter_var($pass_confirm, FILTER_CALLBACK, array('options' => 'validerPass_confirm')),
                 'conditions_accept' => filter_has_var(INPUT_POST, 'conditions_accept')
                 );
$resultat = filter_input_array(INPUT_POST, $options);
if($resultat != null) //Si le formulaire a bien été posté
{
//les messages d'erreur
$msgerreurs = array('pseudo' => 'Pseudonyme invalide',
                    'email' => 'Adresse e-mail incorrect',
                    'pass' => 'Mot de passe invalide',
                    'pass_confirm' => 'Les mots de passe sont different',
                    'conditions_accept' => 'vous devez acceptez les Conditions d\'utilisation'
                     );
$nbrErreurs = 0;
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)
    {
        echo 'Bonjour ' . $resultat['pseudo'] . ' !<br/>Ton adresse de messagerie est bien ' . $resultat['email'] . ' ?<br/>';
        echo 'ton mot de passe ' . $resultat['pass'] . ' Bienvenu !';
    }
 
}
else
{
    echo 'Vous n\'avez rien posté.';
}
les fonctions
<?php
 
if (isset($_POST['pseudo']) AND isset($_POST['email']) AND isset($_POST['pseudo']) AND isset($_POST['pass_confirm']))
{
    $pseudo = mysql_real_escape_string($_POST['pseudo']);
    $email= mysql_real_escape_string($_POST['email']);
    $pass = mysql_real_escape_string($_POST['pass']);
    $pass_confirm = mysql_real_escape_string($_POST['pass_confirm']);
 
 
    function validerPseudo($pseudo)
    {
        if (preg_match("#^([a-zA-Z0-9]){3,}$#", $pseudo))
        {
            return $pseudo;
        }
        else
        {
            return false;
        }
    }
 
    function validerEmail($email)
    {
        if (condition)
        {
            # code...
        }
        else
        {
            return false;
        }
    }
 
    function validerPass($pass)
    {
        if (strlen($pass)>=6)
        {
            filter_var($pass, FILTER_SANITIZE_STRING);
            return $pass;
        }
        else
        {
            return false;
        }
    }
     
    function validerPass_confirm($pass_confirm)
    {
        if ($pass_confirm == $pass)
        {
            filter_var($pass_confirm, FILTER_SANITIZE_STRING);
            return $pass_confirm;
        }
        else
        {
            return false;
        }
    }
}
 
?>

Re: TP : Espace membre avec erreur personnalisé (utiliser de

Posté : 03 août 2014, 20:58
par xTG
Effectues le mysql_real_escape_string après ta vérification.
Dans le cas d'un caractère à échapper cette fonction pourrait te rajouter un \ par exemple.
Ce qui aurait pour effet de renvoyer un mauvais pseudo d'après ta règle de vérification. ;)

Sinon as-tu affiché les variables pour trouver ce qui n'allait pas ?

Re: TP : Espace membre avec erreur personnalisé (utiliser de

Posté : 03 août 2014, 22:44
par del_samples
le script ne fonctionne pas correctement les fonctions ne sont pas utilisées et aussi j'ai des erreur que je n'ai pas réussi a comprendre

Re: TP : Espace membre avec erreur personnalisé (utiliser de

Posté : 04 août 2014, 11:14
par xTG
Je crois avoir compris l'erreur...
$options = array('pseudo' => filter_var($pseudo, FILTER_CALLBACK, array('options' => 'validerPseudo')),
                 'email' => filter_var($email, FILTER_CALLBACK, array('options' => 'validerEmail')),
                 'pass' => filter_var($pass, FILTER_CALLBACK, array('options' => 'validerPass')),
                 'pass_confirm' => filter_var($pass_confirm, FILTER_CALLBACK, array('options' => 'validerPass_confirm')),
                 'conditions_accept' => filter_has_var(INPUT_POST, 'conditions_accept')
                 );
$resultat = filter_input_array(INPUT_POST, $options);
Dans $options tu as en fait déjà tous les résultats, les filter_var sont exécutés.
Ton filter_input_array ne travaille donc pas sur la bonne chose (il est inutile en fait).

Ceci devrait donc suffire :
$resultats= array('pseudo' => filter_var($_POST['pseudo'], FILTER_CALLBACK, array('options' => 'validerPseudo')),
                 'email' => filter_var($_POST['email'], FILTER_CALLBACK, array('options' => 'validerEmail')),
                 'pass' => filter_var($_POST['pass'], FILTER_CALLBACK, array('options' => 'validerPass')),
                 'pass_confirm' => filter_var($_POST['pass_confirm'], FILTER_CALLBACK, array('options' => 'validerPass_confirm')),
                 'conditions_accept' => !empty($_POST)
                 );
Et tu obtiens un array avec des true/false pour chaque résultat.
(enfin pas exactement vu comment tu as fais tes fonctions...
C'est de la vérification ou du nettoyage que tu souhaites faire ?
Faire les deux en même temps c'est pas top...

Re: TP : Espace membre avec erreur personnalisé (utiliser de

Posté : 04 août 2014, 17:57
par moogli
salut,

Pour être exact il s'agit d'une mauvaise utilisation de la fonction filter_input_array qui attend un tableau précis pour chaque indexes (ou un flag de vérification) or, effectivement, ce sont les résultats des filter_var qui sont passé.

la fonction de vérification d'email est inutile et redondante avec le flag de vérification d'email ;)


@+

Re: TP : Espace membre avec erreur personnalisé (utiliser de

Posté : 08 août 2014, 00:01
par del_samples
bonsoir
j'y arrive pas toujours quelqu’un pourrais t-il faire marcher ce code ou ne serais qu'une fonction.
sa fait pers de 2 semaine que je suis dessus sans solution
a propos j'aimerais faire des fonction filtres

Re: TP : Espace membre avec erreur personnalisé (utiliser de

Posté : 08 août 2014, 13:26
par xTG
Montres nous ce que tu as fait à partir de mon code.

Re: TP : Espace membre avec erreur personnalisé (utiliser de

Posté : 08 août 2014, 23:16
par del_samples
ce que j'ai fait mais il y a des erreurs
Notice: Undefined variable:
Warning: filter_var(): First argument is expected to be a valid callback
aux ligne 58 59 et 60
<?php
if (isset($_POST['pseudo'], $_POST['email'], $_POST['pseudo'], $_POST['pass_confirm']))
{
	$pseudo = $_POST['pseudo'];
	$email= $_POST['email'];
	$pass = $_POST['pass'];
	$pass_confirm = $_POST['pass_confirm'];

	function validerPseudo($pseudo)
	{
		if ( $pseudo) 
		{
			return $pseudo;
		}
		else
		{
			return false;
		}
	}

	function validerEmail($email)
	{
		if ($email) 
		{
			return $email;
		}
		else
		{
			return false;
		}
	}

	function validerPass($pass)
	{
		if ($pass) 
		{
			return $pass;
		}
		else
		{
			return false;
		}
	}
	
	function validerPass_confirm($pass_confirm)
	{
		if ($pass_confirm) 
		{
			return $pass_confirm;
		}
		else
		{
			return false;
		}
	}
}
//les option pour verification
$resultats= array('pseudo' => filter_var($pseudo, FILTER_CALLBACK, array('options' => 'validerPseudo')),
                 'email' => filter_var($email, FILTER_CALLBACK, array('options' => 'validerEmail')),
                 'pass' => filter_var($pass, FILTER_CALLBACK, array('options' => 'validerPass')),
                 'pass_confirm' => filter_var($pass_confirm, FILTER_CALLBACK, array('options' => 'validerPass_confirm')),
                 'conditions_accept' => !empty($_POST)
                 );
if($resultat != null) //Si le formulaire a bien été posté
{
//les messages d'erreur
$msgerreurs = array('pseudo' => 'Pseudonyme invalide',
					'email' => 'Adresse e-mail incorrect',
					'pass' => 'Mot de passe invalide',
					'pass_confirm' => 'Les mots de passe sont different',
					'conditions_accept' => 'vous devez acceptez les Conditions d\'utilisation'
					 );
$nbrErreurs = 0;
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) 
	{
		echo 'Bonjour ' . $resultat['pseudo'] . ' !<br/>Ton adresse de messagerie est bien ' . $resultat['email'] . ' ?<br/>';
		echo 'ton mot de passe ' . $resultat['pass'] . ' Bienvenu !';
	}

}
else 
{
	echo 'Vous n\'avez rien posté.';
}

Re: TP : Espace membre avec erreur personnalisé (utiliser de

Posté : 11 août 2014, 13:17
par xTG
Je l'ai repris tel quel en supprimant les if et en renseignant en dur les variables.
Testé sous PHP 5.5 et PHP 5.3.
$pseudo = "pseudo";
        $email= "[email protected]";
        $pass = "password";
        $pass_confirm = "password";

        function validerPseudo($pseudo)
        {
                if ( $pseudo)
                {
                        return $pseudo;
                }
                else
                {
                        return false;
                }
        }

        function validerEmail($email)
        {
                if ($email)
                {
                        return $email;
                }
                else
                {
                        return false;
                }
        }

        function validerPass($pass)
        {
                if ($pass)
                {
                        return $pass;
                }
                else
                {
                        return false;
                }
        }
       
        function validerPass_confirm($pass_confirm)
        {
                if ($pass_confirm)
                {
                        return $pass_confirm;
                }
                else
                {
                        return false;
                }
        }
//les option pour verification
$resultats= array('pseudo' => filter_var($pseudo, FILTER_CALLBACK, array('options' => 'validerPseudo')),
                 'email' => filter_var($email, FILTER_CALLBACK, array('options' => 'validerEmail')),
                 'pass' => filter_var($pass, FILTER_CALLBACK, array('options' => 'validerPass')),
                 'pass_confirm' => filter_var($pass_confirm, FILTER_CALLBACK, array('options' => 'validerPass_confirm')),
                 'conditions_accept' => !empty($_POST)
                 );
var_dump($resultats);
Le script s'exécute sans erreur.
array(5) {
["pseudo"]=>
string(6) "pseudo"
["email"]=>
string(15) "[email protected]"
["pass"]=>
string(8) "password"
["pass_confirm"]=>
string(8) "password"
["conditions_accept"]=>
bool(false)
}

Re: TP : Espace membre avec erreur personnalisé (utiliser de

Posté : 15 août 2014, 19:37
par del_samples
bonjour
ce que je veux c'est que mon code utilise ces fonction ce qui n'est pas le cas actuellement
je ne comprend toujours pas ou est l’erreur
j'ai envie de traiter un très très grand formulaire mai j'y arrive pas
tout mon projet est baser sur les formulaires alors si j'y arrive pas je pourrais pas le réaliser

Re: TP : Espace membre avec erreur personnalisé (utiliser de

Posté : 15 août 2014, 20:03
par sirakawa
Bjr,
Et si on repartait du formulaire?
Montre le code du formulaire, commeça on connaitra le nom potentiel des variables, en apportant éventuellement queques améliorations;;;

Re: TP : Espace membre avec erreur personnalisé (utiliser de

Posté : 16 août 2014, 14:37
par del_samples
bonjour
le code
//les option pour verification
$resultats= array('pseudo' => filter_var($pseudo, FILTER_CALLBACK, array('options' => 'validerPseudo')),
                 'email' => filter_var($email, FILTER_CALLBACK, array('options' => 'validerEmail')),
                 'pass' => filter_var($pass, FILTER_CALLBACK, array('options' => 'validerPass')),
                 'pass_confirm' => filter_var($pass_confirm, FILTER_CALLBACK, array('options' => 'validerPass_confirm')),
                 'conditions_accept' => !empty($_POST)
                 );
if($resultat != null) //Si le formulaire a bien été posté
{
//les messages d'erreur
$msgerreurs = array('pseudo' => 'Pseudonyme invalide',
                                        'email' => 'Adresse e-mail incorrect',
                                        'pass' => 'Mot de passe invalide',
                                        'pass_confirm' => 'Les mots de passe sont different',
                                        'conditions_accept' => 'vous devez acceptez les Conditions d\'utilisation'
                                         );
$nbrErreurs = 0;
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)
        {
                echo 'Bonjour ' . $resultat['pseudo'] . ' !<br/>Ton adresse de messagerie est bien ' . $resultat['email'] . ' ?<br/>';
                echo 'ton mot de passe ' . $resultat['pass'] . ' Bienvenu !';
        }

}
else
{
        echo 'Vous n\'avez rien posté.';
}
 

Re: TP : Espace membre avec erreur personnalisé (utiliser de

Posté : 16 août 2014, 16:05
par sirakawa
Bjr,
Et si on repartait du formulaire?
Montre le code du formulaire, commeça on connaitra le nom potentiel des variables, en apportant éventuellement queques améliorations;;;
Le code du FORMULAIRE, pas celui du script PHP qui est censé vérifier....

Re: TP : Espace membre avec erreur personnalisé (utiliser de

Posté : 24 août 2014, 13:59
par del_samples
Bonjour sirakawa et les autre sa fait un by
main bon voila comme tu me la demander le code
<!DOCTYPE html>
<html>
	<head>
		<title>Inscription</title>		
		<meta charset="utf-8"/>
	</head>
	<body>
		<form method="POST" action="tintin.php">
			<h1 class="">Inscription</h1>
			<input type="text" name="pseudo" id="pseudo" placeholder="Choisir un nom d'utilisateur" autofocus/>
			<input type="email" name="email" id="email" placeholder="E-mail actuelle" />
			<input type="password" name="pass" id="pass" placeholder="Crée un mot de passe" />
			<input type="password" name="pass_confirm" id="pass_confirm" placeholder="Confirmer le mot de passe" />
			<!--insertion de recaptcha ici-->
			<input type="checkbox" name="conditions_accept" id="conditions_accept" />
			<label for="conditions">J'accepte les Conditions d’utilisation</label>
			<input type="submit" name="inscris" id="inscris" value="Je m’inscris"/>
		</form>
	</body>
</html>