Probleme de validation de mon formulaire [Résolu/Fermé]

Signaler
Messages postés
105
Date d'inscription
mardi 1 décembre 2009
Statut
Membre
Dernière intervention
18 février 2021
-
Messages postés
105
Date d'inscription
mardi 1 décembre 2009
Statut
Membre
Dernière intervention
18 février 2021
-
Bonjour,
voila que je m'explique un peu je veut faire une section admin protégée par login et mot de pass
mais j'ai un probleme quand je valide rien ne se passe
voile mon code source:
<?php
$utilisateurs = array(
    'user' => 'password',
); // login et pass

$login = trim($_POST['login']);
$pass = trim($_POST['pass']);
if(empty($login) || empty($pass)) {
 echo"<body>
<center>
<form name=login>
<table width=325 border=1 cellpadding=3>
<tr><td colspan=2 bgcolor=\"black\"><center><font size=\"+2\" color=\"white\" ><b>Connexion</b></font></center></td></tr>
<tr><td>Pseudo:</td><td><input type=text size=\"25\" name=$login></td></tr>
<tr><td>Mot de passe:</td><td><input type=password size=\"25\" name=$pass></td></tr>
<tr><td colspan=2 align=center><input type=submit value=\"Valider\"></td></tr>
</table>
</form>
</center>
</body>"; // affichage du formulaire de validation
} else {
    if(array_key_exists($login,$utilisateurs)) {
        $pass_valide = $utilisateurs[$login];
        if($pass == $pass_valide) {
        header("Location: admin.php"); // connecté + affichage de la page admin
        } else {
            echo 'Mot de passe invalide !';
    } 
}
}
?>

j'aimerais savoir ou je me suis planter la page de connexion s'affiche je rentre mon login et mot de pass et je retourne directement sur la page de connexion.

Un petit coup de main n'est pas de refut!

8 réponses

Messages postés
400
Date d'inscription
vendredi 2 octobre 2009
Statut
Membre
Dernière intervention
23 décembre 2009
62
Bonjour

<form name=login method="post"> peut-etre


EDIT : Arf non j'ai vu :

<tr><td>Pseudo:</td><td><input type=text size=\"25\" name=login></td></tr>
<tr><td>Mot de passe:</td><td><input type=password size=\"25\" name=pass></td></tr>


Au lieu de $login et $pass

Et moi je te conseillerais de tester tes valeurs avant de les stocker dans des variables pour eviter les warnings.

Re-edit :
Faut corriger pour le method=post aussi sinon tu envoi tes variables en $_GET et tu essayes de les récupérer en $_POST
Messages postés
105
Date d'inscription
mardi 1 décembre 2009
Statut
Membre
Dernière intervention
18 février 2021
1
le probleme c'est que je debute en php et je comprend pas toujours tout

merci de m'avoir repondu si vite
Messages postés
105
Date d'inscription
mardi 1 décembre 2009
Statut
Membre
Dernière intervention
18 février 2021
1
$_get et $_post je fais sa comment
Messages postés
400
Date d'inscription
vendredi 2 octobre 2009
Statut
Membre
Dernière intervention
23 décembre 2009
62
Si tu ne precise pas "method=post", les valeur seront envoyé en GET, c'est à dire a la fin de ton url.

Pour récupérer tes variables tu dois donner un nom à tes input.
Or dans ton cas le nom n'était pas bon, donc tu envoyais des valeurs qui n'avait pas pour nom login et pass donc $_POST['login'] et $_POST['pass'] n'existaient jamais.

Pour preuve, avec ton code posté en haut si tu entrait test et test dans les champs ton adresse ressemblait à :
http://.../mapage.php?=test&=test

Pour un$_GET cela doit ressembler à :

http://.../mapage.php?NOMDEVARIABLE1=test&NOMDEVARIABLE2=test


Et tu les récupère via : $_GET['NOMDEVARIABLE1'] et $_GET['NOMDEVARIABLE2']

-------------------------------

$login = trim($_POST['login']);
$pass = trim($_POST['pass']);
if(empty($login) || empty($pass)) {


ici tu assigne tes $_POST à des variables avant de savoir si ils existent ou non

Je te conseillerai :

if(empty($_POST['login']) || empty($_POST['pass'])) {
...
}
else {
$login = trim($_POST['login']);
$pass = trim($_POST['pass']);
}

Messages postés
105
Date d'inscription
mardi 1 décembre 2009
Statut
Membre
Dernière intervention
18 février 2021
1
merci de ta réponse le probleme etais dans la method post
<?php
$utilisateurs = array(
    'user' => 'password',
); // login et pass

$login = trim($_POST['login']);
$pass = trim($_POST['pass']);
if(empty($login) || empty($pass)) {
 echo"
	
<form method=post>  //le probleme etais ici 
<table width=325 border=1 cellpadding=3>
<tr><td colspan=2 bgcolor=\"black\"><center><font size=\"+2\" color=\"white\" ><b>Connexion</b></font></center></td></tr>
<tr><td>Pseudo:</td><td><input type=text size=\"25\" name=login></td></tr>
<tr><td>Mot de passe:</td><td><input type=password size=\"25\" name=pass></td></tr>
<tr><td colspan=2 align=center><input type=submit value=\"Valider\"></td></tr>
</table>
</form>
	
//fermeture de la fenetre
echo "</table>";// affichage du formulaire de validation

} else {
    if(array_key_exists($login,$utilisateurs)) {
$login = trim($_POST['login']); 
 $pass = trim($_POST['pass']); 
        $pass_valide = $utilisateurs[$login];
        if($pass == $pass_valide) {
        header("Location: admin.php"); // connecté + affichage de la page admin
        } else {
            echo 'Mot de passe invalide !';
    } 
}
}
?>


erreur en formulant mon form (form name=login passer en form method=post le reste a ne pas toucher ou déplacer, ne pas deplacer $login = trim($_POST['login']); & $pass = trim($_POST['pass']); en haut sinon l'affichage du formulaire ne s'affiche pas, probleme resolu

merci a toi pour tes conseil.
Messages postés
105
Date d'inscription
mardi 1 décembre 2009
Statut
Membre
Dernière intervention
18 février 2021
1
juste une question en passant comment crypter le mot de passe en md5, j'ai ce probleme la maintenant c'est du genre md5($pass) mais je dois le mettre ou exactement parce que sa marche pas

merci d'avance de ta réponse
Messages postés
400
Date d'inscription
vendredi 2 octobre 2009
Statut
Membre
Dernière intervention
23 décembre 2009
62
$pouet = 'test';
echo $pouet;
$pouet = md5($pouet);
echo $pouet;


Il suffit de faire comme ça pour que ça marche

même

$pouet = md5('test');
echo $pouet;


fonctionne

Alors soit tu fais :

$login = md5(trim($_POST['login']));
$pass = md5(trim($_POST['pass']));


soit

$login = trim($_POST['login']);
$pass = trim($_POST['pass']);
$login = md5($login);
$pass = md5($pass);

Messages postés
105
Date d'inscription
mardi 1 décembre 2009
Statut
Membre
Dernière intervention
18 février 2021
1
merci de ta reponse