If et elseif qui ne veulent pas fonctionner
Résolu
Ninja_En_Short
Messages postés
133
Date d'inscription
Statut
Membre
Dernière intervention
-
Ninja_En_Short Messages postés 133 Date d'inscription Statut Membre Dernière intervention -
Ninja_En_Short Messages postés 133 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- If et elseif qui ne veulent pas fonctionner
- Fonction si et - Guide
- Comment faire fonctionner le chromecast - Guide
- Fonction filtre excel n'existe pas - Forum Excel
- The realtek network controller was not found. if deep sleep mode is enabled please plug the cable ✓ - Forum Pilotes (drivers)
- Impossible d'installer hyper-v le processeur ne dispose pas des fonctions de virtualisation requises ✓ - Forum Hyper-V
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 *
et il faut que tu nommes ton bouton dans le formulaire:
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
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
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
Je regarde ça et je tâche de corrgier mes coquilles.
Merci
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>
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>