8797 sujets

Développement web côté serveur, CMS

bonjour à tous,
Ayant pour objectif d'apprendre à maitriser le php et les bases de données Sql, je suis en train d'effectuer un exercice me permettant de m'améliorer.

Le soucis c'est qu'une fois ma base de donnée réalisée (table + données fictives me servant d'exemple) et mon code php écrit, j'ai voulu testé : or cela ne fonctionne pas en effet lorsque je rentre mon login et mon mot de passe (en ayant passé par Wamp : localhost) et celui ci me renvoit à "Le nom de login que vous avez saisi n'existe pas. Essayez encore" ; c'est à dire au message de renvoi en cas de mauvais login alors que le login et MdP est rentré correctement

Quelqu'un peut il m'aider !


<?php
/*Programme : Login.php
* Descripition : Programme de login pour la section à accès réservé. 
* 	1-s'identifier par un couple nom de login/mot de passe
*/

session_start();
include("chiens.inc");
switch(@$_POST['do'])
{
	case"login":
	$cxn=mysqli_connect("localhost","root","","memberdirectory")
	or die ("Connexion impossible au serveur dans case login");
		
	$sql = "SELECT LoginName FROM member 
WHERE LoginName='$_POST [fusername]'";

	$result = mysqli_query($cxn,$sql)
	or die("Requête en échec 1.");
	$num=mysqli_num_rows($result);
	if ($num>0) // loginname non trouvé
	{
	
         $sql="SELECT LoginName FROM member 
WHERE LoginName='$_POST[fusername]'
AND password=md5('$_POST[fpassword]')";
	
$result2 = mysqli_query($cxn,$sql)
		or die("Requête en échec 2.");
			$num2=mysqli_num_rows($result2);
			if ($num2>0)  // Mot de passe OK
			{
				$_SESSION['auth']="yes";
				$logname=$_POST['fusername'];
				$_SESSION['logname']=$logname;
				$today=date("Y-m-d h:i:s");
				$sql="INSERT INTO Login (loginName, loginTime)
						VALUES('$logname','$today')";
				$result=mysqli_query($cxn,$sql)
					or die("INSERT en échec.");
				header("Location:espace_prive.html"); /***** *****/
			}
			else // mot de passe incorrect
			{
				$message="Le nom de Login '$_POST[fusername]'
						existe, mais le mot de passe ne va pas ! Réessayez.<br>
						";
						include ("login_form.inc");
			}
	}
	elseif ($num==0)  // Nom de login introuvable
	{
	$message="Le nom de login que vous avez saisi n'existe pas. Essayez encore.<br>";
		include("login_form.inc");
	}
	break;

	default:
		include("login_form.inc");}
		?>

Modifié par gulit (19 Jun 2012 - 11:43)
Bonjour,

$sql = "SELECT LoginName FROM member 
WHERE LoginName='$_POST  fusername '";


Il manque quelques crochets après $_POST ?

Sam
Merci Sam,
En effet il manque des crochets mais ceux ci n'apparaissent pas dans le "coller" lorsque je publie le message ! Mais ils y sont bien... Smiley biggrin
Le problème doit venir d'ailleurs !
Gulit
Modifié par gulit (19 Jun 2012 - 14:17)
Bonjour,

J'ai testé ton code et il fonctionne ! Je pense qu'il y a un problème avec tes variables POST (mais l'affichage de ton code ne permet pas de vérifier cela).
Essaie un
var_dump($_POST)
pour voir si les données sont ok.
Sinon j'ai testé en créant des variables $login et $password que j'ai utilisé à la place des $_POST dans les requêtes sql
Salut,
Bon voila mon code, il marche en partie càd :
Il reconnait le login donc : la connexion à la BDD se fait en revanche le MdP je n'arrive pas à l'associé à tel ou tel login ! #-o #-o #-o

<?php

session_start();
	include("chiens.inc");
	switch(@$_POST['do'])
{
	case"login":
		$cxn=mysqli_connect("localhost","root","","memberdirectory")
		or die ("Connexion impossible au serveur dans case login");
		
		
	$sql = "SELECT LoginName FROM member WHERE LoginName='" . mysql_real_escape_string($_POST['fusername']) . "'";
	$result = mysqli_query($cxn,$sql)
				or die("Requête en échec 1.");
	$num=mysqli_num_rows($result);
	if ($num>0) // loginname trouvé
	{
	$sql= "SELECT LoginName FROM member WHERE LoginName='" . mysql_real_escape_string($_POST['fpassword']) . "'";
	$result2 = mysqli_query($cxn,$sql)
				or die("Requête en échec 2.");
	$num2=mysqli_num_rows($result2);
	if ($num2>0)  // Mot de passe OK
	
	{
				$_SESSION['auth']="yes";
				$logname=$_POST['fusername'];
				$_SESSION['logname']=$logname;
				$today=date("Y-m-d h:i:s");
				$sql="INSERT INTO Login (loginName, loginTime)
	 				VALUES('$logname','$today')";
				$result=mysqli_query($cxn,$sql)or die("INSERT en échec.");
				header("Location:espace_prive.php");	
			}

			else // mot de passe incorrect
			{
		$message="Le nom de Login '$_POST[fusername]' existe, mais le mot de passe ne va pas ! Réessayez.<br>";
		include ("login_form.inc");
			}
	}
	
	elseif ($num==0)  // Nom de login introuvable
	{
		$message="Le nom de login que vous avez saisi n'existe pas. Essayez encore.<br>";
		include("login_form.inc");
	}

	break;

	default:
		include("login_form.inc");}
		?>

Modifié par gulit (20 Jun 2012 - 10:25)
Il me semble que ta requête pour le mdp est incorrecte.
Ton WHERE pointe sur le champ login alors que ta condition porte sur le mdp !
Il faut faire un WHERE...AND sur le login et sur le mdp.
ArnoldM a écrit :
Il me semble que ta requête pour le mdp est incorrecte.
Ton WHERE pointe sur le champ login alors que ta condition porte sur le mdp !
Il faut faire un WHERE...AND sur le login et sur le mdp.


c'est pas faux. Faut m'expliquer aussi l'utilité de faire 2 requêtes oO
je suppute que c'est pour avoir deux messages d'erreurs différents
ça fait juste 4 fois plus de code que de tout mettre dans une seule requête
Modifié par xirt (20 Jun 2012 - 17:36)
Salut, j'ai refait ton exercice de vérification du login et du password. J'espère que cela pourra te servir. Il a été testé et vérifié !
<!doctype html>
<html>
<head>
<meta charset="ISO-8859-15" />
<title>V&eacute;rification login + password</title>
</head>

<body>
<?php
/*------------------------*/
/* On récupére les champs */
/*------------------------*/

$reponse = "";

$login = "";
$pswd  = "";

if (isset($_POST['login']))		$login=$_POST['login'];
if (isset($_POST['pswd']))		$pswd=$_POST['pswd'];

/*-----------------------------------------------------*/
/* Informations pour la connexion à la base de données */
/*-----------------------------------------------------*/

$nom_du_serveur  = "localhost";
$nom_de_la_base  = "ma_base";
$nom_utilisateur = "root";
$passe           = "";
 
/*----------------------*/
/* Connexion au Serveur */
/*----------------------*/

$link = mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe") or die('Connexion au serveur impossible : ' . mysql_error());

/*--------------------------------*/
/* Connexion à la base de données */
/*--------------------------------*/

$db = mysql_select_db("$nom_de_la_base") or die("Connexion à la base de données impossible : " . mysql_error());

/*--------------------------------------*/
/* Vérification du login et du password */
/*--------------------------------------*/

$requete = "select * from tab_login where login='$login' and password='$pswd'";

$sql = mysql_query($requete) or die ("Erreur dans la requête : " . mysql_error());

$row = mysql_fetch_row($sql);

if ($row)	$reponse = "login + password sont correctes !";
else		$reponse = "le login ou le password sont incorrecte !";
?>

<div>la réponse est : <?php echo $reponse ?></div>

<?php
/*-------------*/
/* Déconnexion */
/*-------------*/

mysql_close($link);
?>
</body>
</html>