Une conditions ne fait pas effet

Bonjour, je suis entrain de faire des vérifications en php sur mon formulaire d'inscriptions, Donc la fonctions marche très bien seulement ya juste une seule conditions qui ne marche pas. Donc en français c'est "si la longuer de la chaine de caractère ^$mail est inferieur a 3 faire $error .="Veuillez re-saisir votre e-mail". Seulement dans tout les cas cela me renvoie $error. Je vous poste un bout de mon code:

function verification()
{

$mail= $_POST['mail'];	

        if(strlen($password)<6 || $password!=$password2)
	{
		$error.="Votre mot de passe n'est pas valide<br />";
	}
	
	if(strlen($mail)<=3)
	{
		$error.="Veulliez re-saisir votre mail.<br />";
	}

	if(!empty($error))
	{
		print($error);
		return false;
		exit(0);
	}
	return true;
}

Merci d'avance
Yann
Configuration: Mac OS X
Firefox 3.0.10

12 réponses

  1. c'est normal tu essayes de récupérer une variable POST dans une fonction
    or tu ne peux pas, pour bien faire il faudrait que tu passes ta variable à l'appelle de ta fonction en parametre :

    lors de l'appel de ta fonction tu fais verification($_POST['mail']);

    et dans le code que tu as mis plus haut, tu remplaces ta déclaration de fonction par function verification($mail)

    tu n'aurais plus alors qu'à utiliser directement $mail
    0
    1. merci donc sa devrait donner sa :
      verification($_POST['nom'],$_POST['prenom'],$_POST['sexe'],$_POST['pseudo'],$_POST['pass'],$_POST['confirmPass'],$mail= $_POST['mail'])
      En fait on peut faire sa ?
      0
      1. sa n'a rien changé sa m'affiche toujours le message d'erreur dans tout les cas. :'-(
        0
        1. non

          dans ton appel de fonction tu mets:(tu passes l'array $_POST en argument à la fonction)

          verification($_POST)

          et ta fonction devient:

          function verification(argument_array)
          {
          $error=""; //initialisation a vide
          //recup de toutes les variables a tester
          $mail= argument_array['mail'];
          $password=argument_array['pass'];
          $password2=argument_array['confirmPass'];	
          
                  if(strlen($password)<6 || $password!=$password2)
          	{
          		$error.="Votre mot de passe n'est pas valide<br />";
          	}
          	
          	if(strlen($mail)<=3)
          	{
          		$error.="Veulliez re-saisir votre mail.<br />";
          	}
          
          	if(!empty($error))
          	{
          		print($error);
          		return false;
          		exit(0);
          	}
          	return true;
          }
          
          0
          1. sa marche pas non plus mais cette fois j'ai une fenêtre blanche et un code source dans mozzila firefox absent aussi.
            0
            1. oui c'est $argument_array (faut pas oublier les $) ^^
              0
              1. Voici mon ancienne version de ma fonction tout fonctionne sauf la conditions mail:

                function verification()
                {
                //Les variables locales
                
                $user_is_defined="";
                $nom= $_POST['nom'];
                $prenom= $_POST['prenom'];
                $sexe= $_POST['sexe'];
                $user= $_POST['pseudo'];
                $password= $_POST['pass'];
                $password2= $_POST['confirmPass'];
                $mail= $_POST['mail'];
                $error= "";
                $insert_in_db = "";
                
                
                
                //Creatioon des structures conditionnelles
                
                	if(strlen($nom)<=3)
                	{
                		$error.="Veulliez re-saisir votre nom.<br />";
                	}
                	
                	
                	if(strlen($prenom)<=3)
                	{
                		$error.="Veuillez remplir votre prenom.<br />";
                	}
                	
                	
                	if ($sexe==null)
                	{
                		$error.="Veuillez selectionner votre sexe<br />";
                	}
                	
                	
                	if(strlen($user)<=4 || $user_is_defined==true)
                	{
                		$error.="Veuillez rentrer un pseudo plus long que 4 lettres<br />";
                	}
                	
                	
                	if($user==$user_is_defined)
                	{
                		$error.="votre nom d'utilisateur est deja pris<br />";
                	}
                	
                	
                	if(strlen($password)<6 || $password!=$password2)
                	{
                		$error.="Votre mot de passe n'est pas valide<br />";
                	}
                	
                	if(strlen($mail)<=3)
                	{
                		$error.="Veulliez re-saisir votre mail.<br />";
                	}
                
                	if(!empty($error))
                	{
                		print($error);
                		return false;
                		exit(0);
                	}
                	return true;
                }
                

                Je vous postent aussi mon formulaire:
                <form action="transfer_subscribers.php" enctype="multipart/form-data" method="post" name="form" onSubmit="verif();return true;">
                <label><p>E-mail: </label><input type="text" value="" name="email" id="email" />*</p>
                <label>
                
                <p>Mot de passe: </label><input type="password" value="" name="pass" id="pass" /> * <i><small>minimum 6 carctères</small></i></p>							
                
                <label><p>Confirmé votre mot de passe: </label>	<input type="password" value="" id="confirmpass" name="confirmPass" /> *</p>
                
                0
                1. name="email"

                  donc $_POST["email"] et pas $_POST['mail'];

                  (dsl pour le coup des variables POST dans les fonction, j'étais persuadé qu'on pouvait pas les utiliser directement ^^)
                  0
                  1. Ha oui pardon le $ est passé à la trappe

                    comme dit plus haut pour utiliser des variables dans une fonction, il faut

                    soit que ces variables soient déclarées globales

                    soit passées en argument à la fonction

                    sinon c'est comme si on te demandait de resoudre un problème sans te donner le texte

                    alors:

                    function verification($_POST)
                    {
                    //Les variables locales
                    
                    $user_is_defined="";
                    $nom= $_POST['nom'];
                    $prenom= $_POST['prenom'];
                    $sexe= $_POST['sexe'];
                    $user= $_POST['pseudo'];
                    $password= $_POST['pass'];
                    $password2= $_POST['confirmPass'];
                    $mail= $_POST['mail'];
                    $error= "";
                    $insert_in_db = "";
                    
                    
                    
                    //Creatioon des structures conditionnelles
                    
                    	if(strlen($nom)<=3)
                    	{
                    		$error.="Veulliez re-saisir votre nom.<br />";
                    	}
                    	
                    	
                    	if(strlen($prenom)<=3)
                    	{
                    		$error.="Veuillez remplir votre prenom.<br />";
                    	}
                    	
                    	
                    	if ($sexe==null)
                    	{
                    		$error.="Veuillez selectionner votre sexe<br />";
                    	}
                    	
                    	
                    	if(strlen($user)<=4 || $user_is_defined==true) //et cette variable $user_is_defined  elle viens d'ou
                    	{
                    		$error.="Veuillez rentrer un pseudo plus long que 4 lettres<br />";
                    	}
                    	
                    	
                    	if($user==$user_is_defined)
                    	{
                    		$error.="votre nom d'utilisateur est deja pris<br />";
                    	}
                    	
                    	
                    	if(strlen($password)<6 || $password!=$password2)
                    	{
                    		$error.="Votre mot de passe n'est pas valide<br />";
                    	}
                    	
                    	if(strlen($mail)<=3)
                    	{
                    		$error.="Veulliez re-saisir votre mail.<br />";
                    	}
                    
                    	if(!empty($error))
                    	{
                    		print($error);
                    		return false;
                    		exit(0);
                    	}
                    	return true;
                    }
                    
                    
                    ?>
                    
                    et dans transfer_subscribers.php
                    
                    tu dois avoir:
                    
                    verification($_POST); //appel de la fonction
                    0
                    1. oui en fait c'est parce que j'ai fait des modifs sur le formulaire et l'ancienne fonctions a été sauvegardé dans un autre fichier mais sinon le nom était mail

                      mais maintenant sa marche c bizar :-) ...Merci les gars :D et désoler d'avoir pris un peu de votre temps juste a cause d'un e qui manquait :D
                      A+
                      Yann
                      0
                      1. "comme dit plus haut pour utiliser des variables dans une fonction, il faut

                        soit que ces variables soient déclarées globales "

                        Ha mais oui je suis bête

                        le tableau $_POST est une variable globale automatique, voilà pourquoi le reste fonctionne ^^
                        0
                        1. lol user is defined c'était une variable que j'utilisait dans mon ancien script test pour voir si j'avais bien compris un truc et que j'ai oublier d'enlevé en fait j'ai oublier d'enlevé deux variables insert_db et user_is_defined :D chui pas super organisé vous allez me dire mdr :D
                          0