If et elseif qui ne veulent pas fonctionner

Résolu/Fermé
Ninja_En_Short Messages postés 133 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 27 juin 2014 - 15 déc. 2007 à 13:23
Ninja_En_Short Messages postés 133 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 27 juin 2014 - 15 déc. 2007 à 15:00
Bonjour,

J'écris car j'ai un petit gros souci : je suis entrain de me faire un systeme de log pour un futur site en php que je puisse réutiliserplusieurs fois.
Problême, quand je test il me sort à chaque fois que l'utilisateur existe, qu'il se log et qu'en plus c'est un administrateur même si je tape n'importe quoi dans les textbox.

$login et $mdp normalement vous voyez que c'est les login et mdp entrés pour se logger et $statut c'est ce qui défini les droits utilisateur (dans la base SQL "admin" pour administrateur du site, "utild" pour utilisateur avec droits et enfin "user" pour un utilisateur lambda).

J'utilise phpedit et easyphp 2 béta

Voilà le code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
<title>Test de log</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link href="" type="text/css" rel="stylesheet" />
</head>
<body>

<?php

$connect = mysql_connect("localhost","root","");
mysql_select_db("testlog");

$login = $_POST['login'];
$loginSQL = mysql_query("SELECT login FROM utilisateurs WHERE login = '".$login."'");

$mdp = $_POST['mdp'];
$mdpSQL = mysql_query("SELECT mdp FROM utilisateurs WHERE login = '".$login."'");

$statut = mysql_query("SELECT statut FROM utilisateurs WHERE login = '".$login."'");

if (isset($login) && isset($mdp)) {
echo 'login et mdp existent'; ?><br /><?php

if ($login = $loginSQL && $mdp = $mdpSQL) {
echo 'utilisateur trouvé'; ?><br /><?php

if ($statut = 'admin') {
print('Administrateur');

}elseif ($statut = 'utild') {
print ('Utilisateur avec droits');

}elseif ($statut = 'user') {
print('Utilisateur lambda');

}else{
print('Problême de droits');

}
}elseif ($login = $loginSQL && $mdp != $mdpSQL) {
print ('Mot de passe incorrect');

}else{
print ('Utilisateur inexistant ou erreur de login');

}
}elseif (isset($login) && !isset($mdp)) {
print ('Entrez un mot de passe');

}elseif (!isset($login) && isset($mdp)) {
print ('Entrez un login');

}else {
print ('Entrez un login et un mot de passe');

}

?>

</body>
</html>

et celui de la page où l'on inscrit le login et mdp avant de valider (page html bête et méchante avec un form, deux input et un submit).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
<title>Test de log</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
<body>

<div align = "center"><p>
<h1>Bannière</h1>
<form method="POST" action="logged.php">
Login<input type="text" name="login" /> <br />
MDP<input type="password" name="mdp" /> <br />
<input type="submit" value="Login" /> <br />
</form>
</p></div>

</body>
</html>

Merci d'avance

4 réponses

bonjour,

qqs erreurs:

un test if $statut = 'user' sera tpoujours vrai, il faut pour tester l'égalité == la non égalité !=

je t'ai fait ça avec une seule requette à la base qui renvoie ts les champs *

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
<title>Test de log</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link href="" type="text/css" rel="stylesheet" />
</head>
<body>

<?php
// on verifie d'abord que le formulaire a ete poste
if(isset($_POST['envoi']){
	// on verifie que les champs ont ete remplis, pas vides
	if(isset($_POST['login']) && ($_POST['login']==""){
		echo "Entrez votre login !";
	}elseif(isset($_POST['mdp']) && ($_POST['mdp']==""){
		echo "Entrez votre mot de pass !";
	}else{
		
		$connect = mysql_connect("localhost","root","") or die("Pb connexion ".mysql_error());
		mysql_select_db("testlog") or die("Pb selection base ".mysql_error());

		$login = $_POST['login'];
		$mdp = $_POST['mdp'];
		// on va tester si un enr avec les bon login et mdp , qui tiens compte des majuscules minuscule et qui retourne tous les champs  (SELECT  * )
		$result=mysql_query("SELECT * FROM utilisateurs WHERE BINARY login = '".$login."' AND BINARY mdp = '".$mdp."'");
		//si il y en a un
		if(mysql_num_rows($result)>0){
				$rep=mysql_fetch_array($result);
				$loginSQL=$rep['login'];
				$mdpSQL=$rep['mdp'];
				$statut=$rep['statut'];
				if($statut=='admin'){
					echo "Statut admin";
				}elseif($statut=='utild'){
					echo "Statut utilisateur avec droits";
				}

		}else{

		echo "Login ou mdp incorrets !";

		}
	}
}


?>

</body>
</html>



et il faut que tu nommes ton bouton dans le formulaire:

<input type="submit" name="envoi" value="Login" />


indentes aussi ton code, c'est plus facile à lire

je t'ai mis BINARY pour que mysql tienne compte de la casse, pour faire la différence entre un login
toto et Toto ou TOTO
0
Ninja_En_Short Messages postés 133 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 27 juin 2014 9
15 déc. 2007 à 14:11
C'est vrai que j'ai pas trop l'habitude de commenter mes codes, désolé.

Je regarde ça et je tâche de corrgier mes coquilles.

Merci
0
Ninja_En_Short Messages postés 133 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 27 juin 2014 9
15 déc. 2007 à 14:32
Petit bug : les parenthèses oubliées qui font des parse errors ;)

Versions corrigée :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
<title>Test de log</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link href="" type="text/css" rel="stylesheet" />
</head>
<body>

<?php
// on verifie d'abord que le formulaire a ete poste
if (isset($_POST['envoi'])) {
// on verifie que les champs ont ete remplis, pas vides
if(isset($_POST['login']) && ($_POST['login']=="")){
echo "Entrez votre login !";
}elseif(isset($_POST['mdp']) && ($_POST['mdp']=="")){
echo "Entrez votre mot de passe !";
}else{

$connect = mysql_connect("localhost","root","") or die("Pb connexion ".mysql_error());
mysql_select_db("testlog") or die("Pb selection base ".mysql_error());

$login = $_POST['login'];
$mdp = $_POST['mdp'];
// on va tester si un enr avec les bon login et mdp , qui tiens compte des majuscules minuscule et qui retourne tous les champs (SELECT * )
$result=mysql_query("SELECT * FROM utilisateurs WHERE BINARY login = '".$login."' AND BINARY mdp = '".$mdp."'");
//si il y en a un
if(mysql_num_rows($result)>0){
$rep=mysql_fetch_array($result);
$loginSQL=$rep['login'];
$mdpSQL=$rep['mdp'];
$statut=$rep['statut'];
if($statut=='admin'){
echo "Statut admin";
}elseif($statut=='utild'){
echo "Statut utilisateur avec droits";
}

}else{

echo "Login ou mdp incorrects !";

}
}
}


?>

</body>
</html>
0
Ninja_En_Short Messages postés 133 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 27 juin 2014 9
15 déc. 2007 à 15:00
Ok tout marche parfaitement maintenant, un grand merci Alain42
0