Identification : mauvais mot de passe, fonctionne

Résolu/Fermé
Val_Vanco Messages postés 7 Date d'inscription lundi 10 février 2014 Statut Membre Dernière intervention 10 février 2014 - Modifié par Val_Vanco le 10/02/2014 à 15:00
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 10 févr. 2014 à 16:47
Bonjour.

Je viens pour solliciter votre aide sur un petit problème que j'ai.

Je m'explique.
Je suis en train de créer un site en php pour mon rapport de stage. Donc pour prouver mes compétences en php, je met un système requerrant un mot de passe pour accèder au contenu du site.

J'ai fais les codes. Tout va bien avec le bon mot de passe, puis le problème survient. j'essaye un faux mot de passe, et ça passe quand même!!

Si quelqu'un saurait m'aider, ou me conseillez, je vous en remercie d'avance!

Val_vanco

modif :

Voila mon code login.php

<?php
if ($pwd="Colbert")
{
header('location:/rapport/Presentation.php');
}
else
{
header('location:/rapport/perdu.php');
}
?>

4 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 10/02/2014 à 15:07
Bonjour,

Pour tester une égalité, il faut utiliser == et pas = !
if ($pwd == "Colbert") 


Pour éviter ce genre d'erreurs, une technique est d'inverser les opérandes :
if ("Colbert" == $pwd) 

L'avantage ? Si tu oublies un =, tu as une erreur de syntaxe, au lieu d'un script qui semble marcher mais ne fait pas ce que tu veux...

Xavier

PS : juste pour faire un tout petit peu mieux, niveau sécurité :
if (md5($pwd) == "c0e2b8403c14ce455b2fafeec0f4190f1") 

C'est pas encore la panacée, mais c'est « moins pire ».
1
Val_Vanco Messages postés 7 Date d'inscription lundi 10 février 2014 Statut Membre Dernière intervention 10 février 2014
10 févr. 2014 à 15:13
Bonjour,

merci de la réponse.
J'ai fait le test, avec chacun des test (deux =, inverser, et le dernier ((md5($pwd)) mais a chaque fois (comme a chaque mauvais mot de passe), il affiche la page où est écrit : Mauvais identifiant et/ou mot de passe
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
10 févr. 2014 à 16:24
Comment récupères-tu le mot de passe ?
Es-tu sûr qu'il est dans la variable $pwd ?
0
Val_Vanco Messages postés 7 Date d'inscription lundi 10 février 2014 Statut Membre Dernière intervention 10 février 2014
10 févr. 2014 à 16:43
Le mot de passe est bien dans la variable $pwd. Donc quand je l'entre, php devrait le trouvait. Sauf qu'il autorise tout le monde (avec mdp, bon ou mauvais, ou même sans mdp.)
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
10 févr. 2014 à 16:47
Tu en as l'air très sûr, mais honnêtement, je ne le suis pas.
Peux-tu me montrer comment tu mets le mot de passe dans $pwd ?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
10 févr. 2014 à 15:06
Bonjour,

La bonne syntaxe ne serait pas :

if ($pwd =="Colbert")

if ($pwd="Colbert") assigne "Colbert" à $pwd !!!
0
Val_Vanco Messages postés 7 Date d'inscription lundi 10 février 2014 Statut Membre Dernière intervention 10 février 2014
10 févr. 2014 à 15:13
Bonjour,

merci de la réponse.
J'ai fait le test, et il affiche la page où est écrit : Mauvais identifiant et/ou mot de passe
0
Utilisateur anonyme
10 févr. 2014 à 15:06
Bonjour

Grand classique :
if ($pwd="Colbert") 

est une affectation, toujours vraie. La comparaison se fait avec ==, pas = :
if ($pwd=="Colbert") 
0
Val_Vanco Messages postés 7 Date d'inscription lundi 10 février 2014 Statut Membre Dernière intervention 10 février 2014
10 févr. 2014 à 15:13
Bonjour,

merci de la réponse.
J'ai fait le test, et il affiche la page où est écrit : Mauvais identifiant et/ou mot de passe.
0
stgcici Messages postés 51 Date d'inscription mardi 29 octobre 2013 Statut Membre Dernière intervention 18 février 2014 1
10 févr. 2014 à 15:12
Bonsoir,
Après récupération du mot de passe saisie par l'utilisateur au niveau de ta page de traitement fais un test sur la validité du mot de passe récupéré.

if(!empty($_POST['mot_passe'])){//si le champ mot de passe n'est pas vide

$passwrd=$_POST['mot_passe'];
//requete pour verifier dans la base de données si le mot passe existe

$verif="select * from table_connexion where mot_de_pass='.$passwrd.'";
$resul=mysql_query($verif);
$nbre_ligne=mysql_num_rows($resul);

if($nbre_ligne>0){
echo "Vous êtes un utilisateur";
//traitement a faire
}else{

echo 'connexion impossible,vous n'êtes pas membre';
header(location:'connexion.php');//retour a la page de connexion
}

}else{

echo 'Le mot de passe est obligatoire';
header(location:'connexion.php');//retour a la page de connexion
}
0
Val_Vanco Messages postés 7 Date d'inscription lundi 10 février 2014 Statut Membre Dernière intervention 10 février 2014
10 févr. 2014 à 15:16
J'utilise un mot de passe enregistré directement sur la page de connexion (n'utilisant, ni ne maitrisant encore MySQL). Ces mes collègues du service informatique qui m'ont dis de faire ainsi, mais même eux ne trouve pas le problème.

Dois je donc obligatoirement passer par une base de données? Ne puis je avoir le mot de passe directement enregistré dans le code php?
0
stgcici Messages postés 51 Date d'inscription mardi 29 octobre 2013 Statut Membre Dernière intervention 18 février 2014 1
10 févr. 2014 à 15:39
Non tu n'est pas obligé de passer par une base données si toutefois tu connais déjà le bon mot de passe.
Dans ce que il suffit de faire une comparaison entre le mot de passe saisie par l'utilisateur et le vrai mot de passe.

//récupéré le mot de passe saisie par l'utilisateur
$passwrd=$_POST['nom_champ_mot_de_passe'];

if(empty($passwrd)){
echo 'le mot de passe est obligatoire';
}else if($passwrd=="la valeur du mot de passe"){

echo 'connexion reussie';
}else{

echo 'vous n'êtes pas autorisé,mauvais mot de passe';

header(location:'connexion.php');//retour a la page de connexion
}

Au faite c'est a toi de décider du traitement a faire lorsque le mot de passe saisie par l'utilisateur n'est pas bon?
Tu peux par exemple afficher un message pour dire que le mot de passe est incorrecte et revenir sur la page de connexion afin de permettre a l'utilisateur de faire une nouvelle saisie.
0
Val_Vanco Messages postés 7 Date d'inscription lundi 10 février 2014 Statut Membre Dernière intervention 10 février 2014
10 févr. 2014 à 15:53
Autre problème quand j'execute ce code, il me dise a chaque fois : problème a la ligne 13 (le header(location...)).
0
stgcici Messages postés 51 Date d'inscription mardi 29 octobre 2013 Statut Membre Dernière intervention 18 février 2014 1
10 févr. 2014 à 16:09
Pour rediriger le visiteur vers la page de connexion en cas de mot de passe incorrecte, il suffit d'utiliser le code suivant :
Essais ce code(la premiére lettre de location est en majuscule:Location au lieu de location)
<?php
header('Location: nom_de_ta_page.php');
?>
0