Page 1 sur 2

Problème Notice: Undefined index

Posté : 18 mars 2014, 11:02
par Von_Kavalier
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.
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) {

Voici mon code :
<?php
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 !'; 
} 
} 

} 
?>

Re: Problème Notice: Undefined index

Posté : 18 mars 2014, 11:53
par damien_55
HEllo,

Ta variable pass est indefini dans ton script. functions.php. Il faut que tu l'initialises avent de la traiter.

Re: Problème Notice: Undefined index

Posté : 18 mars 2014, 13:01
par Von_Kavalier
HEllo,

Ta variable pass est indefini dans ton script. functions.php. Il faut que tu l'initialises avent de la traiter.
Merci de ta réponse, mais... c'est à dire ? Je suis débutant, initialiser une variable ça me parle, mais après certaines recherches il faut une concordance avec ma base SQL, je pourrais avoir un exemple ? :)

Re: Problème Notice: Undefined index

Posté : 18 mars 2014, 14:29
par xTG
Le problème n'a pas de lien avec ta base de données mais avec ton formulaire.
Tu tentes d'utiliser $_POST['pass'] mais l'index n'existe pas.
C'est donc que le champs input avec comme nom pass n'existe pas.
Et comme un formulaire de connexion sans mot de passe est assez improbable je pense que tu l'as nommé différemment.

Re: Problème Notice: Undefined index

Posté : 18 mars 2014, 14:34
par Von_Kavalier
Le problème n'a pas de lien avec ta base de données mais avec ton formulaire.
Tu tentes d'utiliser $_POST['pass'] mais l'index n'existe pas.
C'est donc que le champs input avec comme nom pass n'existe pas.
Et comme un formulaire de connexion sans mot de passe est assez improbable je pense que tu l'as nommé différemment.
Il y a bien une colonne pass dans ma base de donnée, et pour le mot de passe pour accéder à cette page l'appellation est différente de "pass".
Mais j'aimerais juste savoir ce que je dois faire pour régler ce probleme ^^ Explicitement

Re: Problème Notice: Undefined index

Posté : 18 mars 2014, 14:34
par Aureusms
Bonjour,

Cela veut dire que $user->pass n'existe pas.
Que te retournes ? (à mettre après $user = mysql_fetch_object($query);)
$user = mysql_fetch_object($query);
var_dump ($user);
un petit conseil : protège $_POST['login'] contre les injections SQL et utilises plutôt la librairie mysqli ou PDO car la librairie mysql va être progressivement arrêtée

Re: Problème Notice: Undefined index

Posté : 18 mars 2014, 14:36
par Aureusms
Euh pour vérifier si l'index de $_POST['pass'] existe, n'y a-t-il pas un empty($_POST['pass']) avant ?

Re: Problème Notice: Undefined index

Posté : 18 mars 2014, 14:37
par Von_Kavalier
Euh pour vérifier si l'index de $_POST['pass'] existe, n'y a-t-il pas un empty($_POST['pass']) avant ?
Niveau sécurité aucun probleme, c'est un projet d'école ils ne viendront pas vérifier ^^

Re: Problème Notice: Undefined index

Posté : 18 mars 2014, 14:42
par Von_Kavalier
Bonjour,

Cela veut dire que $user->pass n'existe pas.
Que te retournes ? (à mettre après $user = mysql_fetch_object($query);)
$user = mysql_fetch_object($query);
var_dump ($user);
un petit conseil : protège $_POST['login'] contre les injections SQL et utilises plutôt la librairie mysqli ou PDO car la librairie mysql va être progressivement arrêtée
J'essaierais mais tout de suite je ne peux pas, je répondrais dès que possible

Re: Problème Notice: Undefined index

Posté : 18 mars 2014, 17:14
par xTG
Euh pour vérifier si l'index de $_POST['pass'] existe, n'y a-t-il pas un empty($_POST['pass']) avant ?
Niveau sécurité aucun probleme, c'est un projet d'école ils ne viendront pas vérifier ^^
Que dire... Tu es dans une école de design ? Dans une école de mécanique ? Ou peut être dans une école d'agro-alimentaire ?
Si ce n'est pas le cas... Changes ton code...
Ou bien si ce que tu dis est véridique... Changes d'école... :|

Re: Problème Notice: Undefined index

Posté : 18 mars 2014, 17:18
par Von_Kavalier
Euh pour vérifier si l'index de $_POST['pass'] existe, n'y a-t-il pas un empty($_POST['pass']) avant ?
Niveau sécurité aucun probleme, c'est un projet d'école ils ne viendront pas vérifier ^^
Que dire... Tu es dans une école de design ? Dans une école de mécanique ? Ou peut être dans une école d'agro-alimentaire ?
Si ce n'est pas le cas... Changes ton code...
Ou bien si ce que tu dis est véridique... Changes d'école... :|
Je suis sérieux, je suis en terminale sti et on va juste présenter notre travail devant un jury, montrer que ça fonctionne et que le cahier des charges est respecté. Ils ne verront jamais le code et si c'est le cas ce ne seront que mes profs dont le php n'est pas leur spécialité. :)

Re: Problème Notice: Undefined index

Posté : 18 mars 2014, 17:54
par Aureusms
Son point de vue se défend... Penses-y quand même pour la suite : la sécurité est primordiale avant le design (du moins c'est mon point de vue)

Re: Problème Notice: Undefined index

Posté : 18 mars 2014, 17:58
par Von_Kavalier
Son point de vue se défend... Penses-y quand même pour la suite : la sécurité est primordiale avant le design (du moins c'est mon point de vue)
Oui bien sûr, mais je veux pas perdre de temps là dessus. Je vous donne ma parole que dans mes prochains codes la sécurité sera le principal :D

Re: Problème Notice: Undefined index

Posté : 18 mars 2014, 18:02
par Aureusms
Ok pas de problème : bon bac !

Re: Problème Notice: Undefined index

Posté : 18 mars 2014, 21:43
par xTG
Ton avis se défend. Même si j'aurai plutôt tendance à faire ce genre de vérification sans même y réfléchir.
Cela fait partie des habitudes inconsciente de tout bon développeur.
On ne gagne jamais de temps à ne pas traiter ce genre de cas au final. :)