Problème Notice: Undefined index
Von_Kavalier
Messages postés
28
Statut
Membre
-
Von_Kavalier Messages postés 28 Statut Membre -
Von_Kavalier Messages postés 28 Statut Membre -
Bonjour, comme beaucoup j'ai cette erreur et je ne sais pas comment la traiter, je suis débutant en php et malgré des recherches je n'arrive pas à résoudre ce problème.
L'erreur se situe à la ligne de vérification de la concordance des mots de passe. Le message qui s'affiche sur la page d'après mon code est : "mauvais mot de passe pour cet utilisateur" et pas un autre. Merci de votre aide.
Voici mon code :
function login() {
$pass= (isset($_POST['pass'])) ? mysql_real_escape_string($_POST['pass']) : NULL;
// Si on a soumit le formulaire (si on a cliqué sur "Se connecter")
if(isset($_POST['go_login'])) {
// Si les deux champs ne sont pas vides
if(!empty($_POST['login']) || !empty($_POST['pass'])) {
// On éxécute une requête pour détecter si le login entré existe dans la base
$query = mysql_query("SELECT * FROM users WHERE login = '".$_POST['login']."'");
// Si on a un résultat => il existe
if(mysql_num_rows($query) == 1) {
$user = mysql_fetch_object($query);
// On vérifie la concordance des mots de passe
if(($_POST['pass']) == $user->pass) {
// Si on arrive jusque ici c'est que le couple login / mot de passe est résolu
// On lance donc la session
session_start();
$_SESSION['id'] = $user->id;
$_SESSION['login'] = $user->login;
echo 'gg le g';
} else {
echo 'Mauvais mot de passe pour cet utilisateur.';
}
} else {
echo 'Ce login n\'existe pas dans notre base.';
}
} else {
echo 'Vous devez remplir tous les champs !';
}
}
}
?>
L'erreur se situe à la ligne de vérification de la concordance des mots de passe. Le message qui s'affiche sur la page d'après mon code est : "mauvais mot de passe pour cet utilisateur" et pas un autre. Merci de votre aide.
Voici mon code :
function login() {
$pass= (isset($_POST['pass'])) ? mysql_real_escape_string($_POST['pass']) : NULL;
// Si on a soumit le formulaire (si on a cliqué sur "Se connecter")
if(isset($_POST['go_login'])) {
// Si les deux champs ne sont pas vides
if(!empty($_POST['login']) || !empty($_POST['pass'])) {
// On éxécute une requête pour détecter si le login entré existe dans la base
$query = mysql_query("SELECT * FROM users WHERE login = '".$_POST['login']."'");
// Si on a un résultat => il existe
if(mysql_num_rows($query) == 1) {
$user = mysql_fetch_object($query);
// On vérifie la concordance des mots de passe
if(($_POST['pass']) == $user->pass) {
// Si on arrive jusque ici c'est que le couple login / mot de passe est résolu
// On lance donc la session
session_start();
$_SESSION['id'] = $user->id;
$_SESSION['login'] = $user->login;
echo 'gg le g';
} else {
echo 'Mauvais mot de passe pour cet utilisateur.';
}
} else {
echo 'Ce login n\'existe pas dans notre base.';
}
} else {
echo 'Vous devez remplir tous les champs !';
}
}
}
?>
1 réponse
-
Salut,
Vu le message d'erreur que tu obtiens, je penche à vue de nez pour deux pistes :
- soit $_POST['pass'] n'est pas défini (au passage, tu crées une variable $pass pour gérer ce cas mais tu ne l'utilises ensuite nulle part dans ton script)
- soit il n'y a pas de colonne nommée 'pass' dans ta table 'users'.
Si ce n'est pas ça, et pour aider à comprendre le problème, donne de manière complète la notice qui s'affiche et que tu as mise en titre de ton post. Elle doit t'indiquer un numéro de ligne et la variable concernée.
PS : Tu réalises un mysql_real_escape_string sur le password, mais c'est le login que tu utilises dans ta requête... Et comme tu utilises de manière brute le $_POST['login'] dans ta requête, elle est vulnérable. Rien à voir avec ton problème, mais je te le signale pour information.-
Merci de ta réponse, il y a bien une colonne 'pass' dans ma table, c'est la premiere chose à laquelle j'ai pensé, je vais essayer de créer la variable puis je te tiendrais au courant.
Pour l'instant j'ai des problemes avec le serveur mais dès que c'est réglé je répondrais.
PS: Niveau sécurité je m'en fiche c'est un projet d'école, et ils iront pas vérifier. -
Non, la création de la variable ne change rien et affiche toujours la même erreur, voilà le message d'erreur complet:
Notice: Undefined index: pass in F:\wamp\www\projet\functions.php on line 23
Call Stack
# Time Memory Function Location
1 0.0010 144592 {main}( ) ..\login.php:0
2 0.0190 156112 login( ) ..\login.php:14
La ligne 23 est celle-ci :
// On vérifie la concordance des mots de passe
if(($_POST['pass']) == $user->pass) { -
-
-
-