Pb interface de connexion user

chwal
Invité n'ayant pas de compte PHPfrance

02 avr. 2010, 12:45

Bonjour J'essaye de créer une interface de connexion pour utilisateur. J'ai une interface de création de compte qui fonctionne.

Si le bon mot de passe est saisie il n'y a pas de problème en revanche si il y a une erreur dans la saisie de l'email et du mot de passe la page se recharge et le message d'erreur prévu (via un header) n'apparait pas.
en gros j'ai une condition if --- else et je ne tombre jamais dans le else

voici mon code:

fonction:
 function verif_membres($email, $mdp)	//ici on déclare une fonction qui verifie que le qui recherche dans la bdd le mot de passe et email correspondant
{
	$req = "SELECT email,mdp FROM membres where email='$email' and mdp='$mdp'";
	$c = mysql_query($req);
	//print(mysql_error() . $req);
}
 
 function charge_membres($email)
{
	$req = "SELECT prenom, nom, adresse, tel, email, sexe, birthdate, admin FROM membres where email='$email'";
	$c = mysql_query($req);
	print(mysql_error() . $req);
	return $c;
}
if(isset($_POST['connexion']))
 {
	$email = trim($_POST['email']);	
	$mdp=md5($_POST['mdp']);	
	$donnees = verif_membres($email, $mdp);
	while($personne = mysql_fetch_array($donnees))	
	{
		print $personne['mdp'] . $personne['email'];	
		print_r($personne);	
		echo 'ok';
			if($mdp == $personne['mdp'] && $email==$personne['email'])
			{
			$donnees_du_membre = charge_membres($email);		
				while($info = mysql_fetch_array($donnees_du_membre))				
					{					
						$_SESSION['membres']['prenom'] = $info['prenom']; 	



	
						$_SESSION['membres']['nom'] = $info['nom']; 	
						$_SESSION['membres']['adresse'] = $info['adresse']; 		
						$_SESSION['membres']['tel']= $info['tel']; 	
						$_SESSION['membres']['email']= $info['email']; 				
						$_SESSION['membres']['sexe']= $info['sexe']; 			
						$_SESSION['membres']['birthdate']= $info['birthdate']; 				
						$_SESSION['membres']['admin']= $info['admin']; 			
					}*/
			
			header("Location:identification.php?msg=ok");
			
			}	
			else		// c'est ce else qui ne fonctionne pas
			{
			header("Location:identification.php?msg=nopass");	
			echo 'no';
			}
	}
}

				<?php
 if(isset($_GET['msg']))
 {				switch($_GET['msg'])
	{					case 'ok':						
						print '<p>Vous êtes connecté</p>';				
						break;					
						
						case 'nopass':			
						print '<p>veuillez verifier votre votre email et votre mot de passe</p>';				
						break;				

						
	}
}

Eléphanteau du PHP | 27 Messages

02 avr. 2010, 12:56

salut

pourquoi mettre une boucle ici ,
il n'y en a pas besoin

Code : Tout sélectionner

while($personne = mysql_fetch_array($donnees))
le principe devrait être le suivante :
// je teste si OK

// is ok go là

// si pas ok go ici
toi tu ferais plutôt une boucle de ce type
{ // je teste si c'est OK

// is ok go là

// si pas ok go ici

}
Développeur PHP à temps perdu ...
PHP Maximus CMS , un cms plus petit PHP Minimus, un cms minimaliste PHP Nanomus, un pare feu pour votre site PHP Firewall

chwal
Invité n'ayant pas de compte PHPfrance

02 avr. 2010, 13:29

Merci de ton aide

Je ne si pas sur de comprendre la nuance entre le:

//je teste si c'est OK
et

// je teste si OK

ma fonction verif membre ne retournant pas true or false mais ma query sql

si je fais juste un teste sur ma fonction par exemple avec:

if($donnees)
{
}
else
{
}
la condition est toujours vérifier puisque ma requête sql s'exécute toujours, la variable $données existe toujours.

c'est pour ça que je créé un tableau pour vérifier l'égalité entre la donnée de ma base SQL (dans le tableau) et la variable de mon formulaire

merci encore de ton aide

Eléphanteau du PHP | 27 Messages

02 avr. 2010, 13:45

ok, c'est pas évident sur un forum en plus :(

regarde l'idée ce serait plus de virer cette boucle qui n'a pas lieu d'être ( pour moi ), avec un code de ce type
if(isset($_POST['connexion']))
 {
        $email = trim($_POST['email']);
        $mdp=md5($_POST['mdp']);       
        $donnees = verif_membres($email, $mdp);
        $personne = mysql_fetch_array($donnees);

                print $personne['mdp'] . $personne['email'];   
                print_r($personne);    
                echo 'ok';
                        if($mdp == $personne['mdp'] && $email==$personne['email'])
                        {
                        $donnees_du_membre = charge_membres($email);           
                                while($info = mysql_fetch_array($donnees_du_membre))                           
                                        {                                      
                                                $_SESSION['membres']['prenom'] = $info['prenom'];      



       
                                                $_SESSION['membres']['nom'] = $info['nom'];    
                                                $_SESSION['membres']['adresse'] = $info['adresse'];            
                                                $_SESSION['membres']['tel']= $info['tel'];      
                                                $_SESSION['membres']['email']= $info['email'];                         
                                                $_SESSION['membres']['sexe']= $info['sexe'];                   
                                                $_SESSION['membres']['birthdate']= $info['birthdate'];                         
                                                $_SESSION['membres']['admin']= $info['admin'];                 
                                        }*/
                       
                        header("Location:identification.php?msg=ok");
                       
                        }      
                        else            // c'est ce else qui ne fonctionne pas
                        {
                        header("Location:identification.php?msg=nopass");      
                        echo 'no';
                        }
}
Développeur PHP à temps perdu ...
PHP Maximus CMS , un cms plus petit PHP Minimus, un cms minimaliste PHP Nanomus, un pare feu pour votre site PHP Firewall

Chwal
Invité n'ayant pas de compte PHPfrance

02 avr. 2010, 14:05

En effet ça marche mieux.

Je sais pas pourquoi j'était persuader qu'avec mysql_fetch_array j'avais besoin d'une boucle pour lister les éléments.

mille merci :D

Eléphanteau du PHP | 27 Messages

02 avr. 2010, 14:15

:non: non, il te suffit de garder en tête qu'une boucle est utile pour extraire plusieurs lignes de ta table SQL

là une seule ligne nous convenait donc pas de boucle :)
Développeur PHP à temps perdu ...
PHP Maximus CMS , un cms plus petit PHP Minimus, un cms minimaliste PHP Nanomus, un pare feu pour votre site PHP Firewall