Probleme de validation de mon formulaire

Résolu/Fermé
Yuushi_Sato Messages postés 104 Date d'inscription mardi 1 décembre 2009 Statut Membre Dernière intervention 18 février 2021 - 1 déc. 2009 à 11:01
Yuushi_Sato Messages postés 104 Date d'inscription mardi 1 décembre 2009 Statut Membre Dernière intervention 18 février 2021 - 2 déc. 2009 à 10:45
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

Pilow Messages postés 400 Date d'inscription vendredi 2 octobre 2009 Statut Membre Dernière intervention 23 décembre 2009 71
1 déc. 2009 à 11:10
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
0
Yuushi_Sato Messages postés 104 Date d'inscription mardi 1 décembre 2009 Statut Membre Dernière intervention 18 février 2021 1
1 déc. 2009 à 11:20
le probleme c'est que je debute en php et je comprend pas toujours tout

merci de m'avoir repondu si vite
0
Yuushi_Sato Messages postés 104 Date d'inscription mardi 1 décembre 2009 Statut Membre Dernière intervention 18 février 2021 1
1 déc. 2009 à 11:23
$_get et $_post je fais sa comment
0
Pilow Messages postés 400 Date d'inscription vendredi 2 octobre 2009 Statut Membre Dernière intervention 23 décembre 2009 71
1 déc. 2009 à 11:23
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']);
}

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Yuushi_Sato Messages postés 104 Date d'inscription mardi 1 décembre 2009 Statut Membre Dernière intervention 18 février 2021 1
1 déc. 2009 à 22:50
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.
0
Yuushi_Sato Messages postés 104 Date d'inscription mardi 1 décembre 2009 Statut Membre Dernière intervention 18 février 2021 1
1 déc. 2009 à 22:54
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
0
Pilow Messages postés 400 Date d'inscription vendredi 2 octobre 2009 Statut Membre Dernière intervention 23 décembre 2009 71
2 déc. 2009 à 08:10
$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);

0
Yuushi_Sato Messages postés 104 Date d'inscription mardi 1 décembre 2009 Statut Membre Dernière intervention 18 février 2021 1
2 déc. 2009 à 10:45
merci de ta reponse
0