Vérifier la validité d'un mot passe [PHP]

Fermé
Signaler
-
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
-
Bonjour,
J'ai un probleme avec ma page PHP en ce qui concerne la vérification de mon mot de passe dans le cadre de mon projet pour le bac....mon code à l'air d'etre bon mais bon voila, ça ne marche pas...
voila mon code :
<?php
$maconnexion =mysql_connect("localhost","root","geronimo")
or die("Connexion au serveur impossible");
$db=mysql_select_db("Lycee",$maconnexion)
or die("Sélection de la base de données impossible");


$Requete1="Select loginadmin From Administration
Where loginadmin =\"$_POST[loginadmin]\" ";
$Resultat1=mysql_query($Requete1)
or die("impossible d'executer la requête 1");

$Num1=mysql_num_rows($Resultat1);
if($Num1>=1)
{
$Requete2="Select passwordadmin From Administration
Where passwordadmin =\"$_POST[passwordadmin]\" and loginadmin =\"$_POST[loginadmin]\" ";

$Resultat2=mysql_query($Requete2)
or die("impossible d'executer la requête 2");

$Num2=mysql_num_rows($Resultat2);
if($Num2==1)
header("Location:form_prof.htm");
else
header("Location:connexion_form1.html");
}
else
header("Location:connexion_form2.html");
?>
Je comprends pas ce qu'il se passe...pourtant les données sont dans ma base et tout...dites-moi ce qu'il ne va pas svp...
merci d'avance

9 réponses

Slt,

enleve tes sflash!


<?php

$host="localhost"
$user = "root";
$pass ="geronino";

$maconnexion =mysql_connect($host,$user,$pass);
$db=mysql_select_db("Lycee");

$login = $_POST['loginadmin'];
$passwordadmin = $_POST['passwordadmin'];

$Requete1 = 'SELECT loginadmin FROM Administration WHERE
loginadmin="'.$login.'" AND
passwordadmin ="'passwordadmin.'"';

$Resultat1=mysql_query($Requete1)



$num1 = mysql_fetch_assoc($resultat1);

$passwordadmin1 = $num1['passwordadmin'];
$login1 = $num1['password'];

if ($login == $login1 && $passwordadmin == $passwordadmin1);
{


//si tu veut
session_start();
header("Location:connexion_form1.html");

}else {
header("Location:connexion_form2.html");
}
?>
Dsl a la $Requete1 c'est 'SELECT loginadmin, passwordadmin FROM...
Messages postés
1628
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
5 septembre 2012
113
Il manque quelques point-virgules là-dedans !
Bonjour

Syntaxiquement, tout a l'air correct.
Quand tu dis que "ça ne marche pas", ça ne veut rien dire. Pour que ça aie un sens, il faut que tu dises quelles manips tu fais, quels résultats tu attends et quels résultats tu observes.
Bon je m'explique mieux...J'ai une page avec un formulaire "login", "password" enfin normal quoi...j'ai ma base de données avec dedans un login et un mot de passe déja insérer...et cette page php est censée vérifier le login et le mot de passe pour pouvoir accéder a la page suivante...!!! Tu vois comme quand tu te connectes a commentçamarche...!!! lol et au lieu de m'amener a la page suivante, il me fait des trucs bisares genre, il me demande de télécharger mon fichier .php ou il m'affiche mon codage php...c'est bisare...:'( il me met ça : Notice: Undefined variable: login in g:\projet 3d\phpmyadminmodgsi_lycee\easyphp1-8-modgsi\www\projet\verif.php on line 10
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
dans tes if else il vaut mieux mettre des { }
tu en avait mis une partie seulement

ensuite je suppose que tu veux faire
si seulement le login est bon acces à une page 1
si login est pas bon acces a une autre page 2
si login et pass sont bons acces a une autre page prof

donc avec tes deux test ça peut marcher

pour ton pb:
- est ce que ton script se nomme bien en .php ?
- passes tu bien par un serveur (local ou distant) c. a d. tu tapes l'adresse dans ton navigateur ou tu cliques seulement sur le fichier dans l'explorateur windows ?
- pour que le header fonctionne il ne faut absolument aucune balise html avant ce code (ni ligne vide avant <?php)

Ensuite pour que ce soit valable il faut faire une session
vas voir sur G... "sessions php"

car la si on tape directement l'adresse de la page "form_prof.htm" ça contourne ta vérification de login/password !


<?php
$maconnexion =mysql_connect("localhost","root","geronimo")or die("Connexion au serveur impossible ".mysql_error());
$db=mysql_select_db("Lycee",$maconnexion)or die("Sélection de la base de données impossible ".mysql_error());
if(empty($_POST['loginadmin']) && empty($_POST['passwordadmin'])){
	//si l'utilisiateur n'a pas saisi les 2 
	echo 'Vous devez saisir un login et un mot de pass !'; 
}else{
	//les deux ne sont pas vide on identifie
	//on passe par la fonction mysql_real_escape_string pour sécuriser par rapport aux injections mysql (ça met des \ la ou il faut)
	$loginadmin=mysql_real_escape_string($_POST['loginadmin'],$maconnexion);
	$passadmin=mysql_real_escape_string($_POST['passadmin'],$maconnexion);
}
//verification en une seule requette que login  existe dans la BDD
//test de la forme login='valeur_login'
$Requete1="SELECT loginadmin,passwordadmin FROM Administration WHERE loginadmin ='".$loginadmin."' ";
$Resultat1=mysql_query($Requete1)or die("Pb avec la requette ".mysql_error());

$Num1=mysql_num_rows($Resultat1);
if($Num1>=1)
{
	$Requete2="SELECT passwordadmin FROM Administration WHERE passwordadmin ='".$passwordadmin."' AND loginadmin ='".$loginadmin."' ";

	$Resultat2=mysql_query($Requete2)or die("impossible d'executer la requête 2 ".mysql_error());

	$Num2=mysql_num_rows($Resultat2);
	if($Num2==1){
		header("Location:form_prof.htm");
	}else{
		header("Location:connexion_form1.html");
	}

}else{

	header("Location:connexion_form2.html");
}
?>
oui mon script se nomme bien en .php, je passe par un serveur local vu que je clique sur mon fichier dans l'explorateur windows!!
je vien d'essayer avec ton codage et regarde ce que ça me met...


Notice: Undefined index: passadmin in g:\projet 3d\phpmyadminmodgsi_lycee\easyphp1-8-modgsi\www\projet\noname1.php on line 11

Notice: Undefined variable: passwordadmin in g:\projet 3d\phpmyadminmodgsi_lycee\easyphp1-8-modgsi\www\projet\noname1.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at g:\projet 3d\phpmyadminmodgsi_lycee\easyphp1-8-modgsi\www\projet\noname1.php:11) in g:\projet 3d\phpmyadminmodgsi_lycee\easyphp1-8-modgsi\www\projet\noname1.php on line 29
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
je passe par un serveur local vu que je clique sur mon fichier dans l'explorateur windows!!
Alors la pas d'accord, si tu cliques sur le nom du fichier dans l'exploratuer windows tu ne passes pas par le serveur local, pour passer par le serveur local si tu as EasyPhp ou wamp d'installé sur ton PC, tu dois taper dans la barre d'adresse de ton navigateur: http://localhost/projet/noname1.php

mais vu les messages que tu as tu dois surement faire comme ça

dans ton formulaire, est ce que ton champ mot de passe a bien pour name="passwordadmin"
tout en minuscules
j'ai easyphp c'est avec ça que je travaille...et oui dans mon formulaire, mon champ mot de passe a bien pour nom name="passwordadmin" ben attends je vais te mettre mon codage HTML aussi...regarde :
<body onLoad="tictac()">
<p align="right"><img src="68/c0.gif" name="a" width="16" height="21"><img src="68/c0.gif" name="b" width="16" height="21"><img src="68/colon.gif" name="c" width="9" height="21"><img src="68/c0.gif" name="d" width="16" height="21"><img src="68/c0.gif" name="e" width="16" height="21"><img src="68/colon.gif" name="f" width="9" height="21"><img src="68/c0.gif" name="g" width="16" height="21"><img src="68/c0.gif" name="h" width="16" height="21">
<br><br><br>
</p>
<CENTER><TABLE border=1>
<TR>
<TD><p align="center"><b><font size="10" face ="impact">ADMINISTRATION</font></b></p></TD>
</TR>
</TABLE></CENTER>
<br><br>
<font size="5">Veuillez saisir ci-dessous les informations utiles à votre connexion :</font>
<br><br><br>
<form method="post" action="noname1.php">
<p align="center"><font size="5">Login : </font><input type="text" name="loginadmin" value=""/><br><br>
<font size="5">Mot de passe : </font><input type="password" name="passwordadmin" value=""/><br><br>
<font size="5"><input type="submit" value="Valider"/>
</p>
</form>
</body>
voila je comprends pas et je commence à saturer la...lol
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
rajoute name= dans ton bouton submit:
<body onLoad="tictac()">
<p align="right"><img src="68/c0.gif" name="a" width="16" height="21"><img src="68/c0.gif" name="b" width="16" height="21"><img src="68/colon.gif" name="c" width="9" height="21"><img src="68/c0.gif" name="d" width="16" height="21"><img src="68/c0.gif" name="e" width="16" height="21"><img src="68/colon.gif" name="f" width="9" height="21"><img src="68/c0.gif" name="g" width="16" height="21"><img src="68/c0.gif" name="h" width="16" height="21">
<br><br><br>
</p>
<CENTER><TABLE border=1>
<TR>
<TD><p align="center"><b><font size="10" face ="impact">ADMINISTRATION</font></b></p></TD>
</TR>
</TABLE></CENTER>
<br><br>
<font size="5">Veuillez saisir ci-dessous les informations utiles à votre connexion :</font>
<br><br><br>
<form method="post" action="noname1.php">
<p align="center"><font size="5">Login : </font><input type="text" name="loginadmin" value=""/><br><br>
<font size="5">Mot de passe : </font><input type="password" name="passwordadmin" value=""/><br><br>
<font size="5"><input type="submit" name="valider" value="Valider"/>
</p>
</form>
</body> 



ensuite voir commentaires ci dessous:
<?php
$maconnexion =mysql_connect("localhost","root","geronimo")or die("Connexion au serveur impossible ".mysql_error());
$db=mysql_select_db("Lycee",$maconnexion)or die("Sélection de la base de données impossible ".mysql_error());
if(isset($_POST['valider'])){ //le formulaire a été posté
	if(empty($_POST['loginadmin']) && empty($_POST['passwordadmin'])){
		//si l'utilisiateur n'a pas saisi les 2 
		echo 'Vous devez saisir un login et un mot de pass !'; 
	}else{
		//les deux ne sont pas vide on identifie
		//on passe par la fonction mysql_real_escape_string pour sécuriser par rapport aux injections mysql (ça met des \ la ou il faut)
		$loginadmin=mysql_real_escape_string($_POST['loginadmin'],$maconnexion);
		$passadmin=mysql_real_escape_string($_POST['passwordadmin'],$maconnexion); // la il y avait passadmin au lieu de passwordadmin
		//c'est pour cla que tu avait le message d'erreur: Undefined index: passadmin
	}
	//verification en une seule requette que login  existe dans la BDD
	//test de la forme login='valeur_login'
	$Requete1="SELECT loginadmin,passwordadmin FROM Administration WHERE loginadmin ='".$loginadmin."' ";
	$Resultat1=mysql_query($Requete1)or die("Pb avec la requette ".mysql_error());

	$Num1=mysql_num_rows($Resultat1);
	if($Num1>=1)
	{
		$Requete2="SELECT passwordadmin FROM Administration WHERE passwordadmin ='".$passwordadmin."' AND loginadmin ='".$loginadmin."' ";

		$Resultat2=mysql_query($Requete2)or die("impossible d'executer la requête 2 ".mysql_error());

		$Num2=mysql_num_rows($Resultat2);
		if($Num2==1){
			header("Location:form_prof.htm");
		}else{
			header("Location:connexion_form1.html");
		}

	}else{

		header("Location:connexion_form2.html");
	}
}
?>