Problème Notice: Undefined index
Von_Kavalier
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
Von_Kavalier Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
Von_Kavalier Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
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 !';
}
}
}
?>
A voir également:
- Problème Notice: Undefined index
- Notice gratuite - Guide
- Notice chromecast - Guide
- Notice télécommande universelle grundig - Forum Téléviseurs
- Homday x-pert écouteur bluetooth notice ✓ - Forum Casque et écouteurs
- Uleway g381 notice - Forum Mobile
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.
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.
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.
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) {
Tu as défini $pass à null si $_POST['pass'] n'existe pas, mais ensuite tu ne l'utilises pas...
if (isset($_POST['pass']))
{
echo 'oui';
} else
{
echo 'non';
}