[RESOLU] Problème Notice: Undefined index

Eléphanteau du PHP | 29 Messages

18 mars 2014, 11:02

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 !'; 
} 
} 

} 
?>
Modifié en dernier par moogli le 18 mars 2014, 12:23, modifié 1 fois.
Raison : bbcode php
Errare humanum est, lupus et agnus, geranium begonia, para bailar la bamba

Mammouth du PHP | 504 Messages

18 mars 2014, 11:53

HEllo,

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

Eléphanteau du PHP | 29 Messages

18 mars 2014, 13:01

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 ? :)
Errare humanum est, lupus et agnus, geranium begonia, para bailar la bamba

ViPHP
xTG
ViPHP | 7331 Messages

18 mars 2014, 14:29

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.

Eléphanteau du PHP | 29 Messages

18 mars 2014, 14:34

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
Errare humanum est, lupus et agnus, geranium begonia, para bailar la bamba

ViPHP
ViPHP | 1996 Messages

18 mars 2014, 14:34

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
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
ViPHP | 1996 Messages

18 mars 2014, 14:36

Euh pour vérifier si l'index de $_POST['pass'] existe, n'y a-t-il pas un empty($_POST['pass']) avant ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 29 Messages

18 mars 2014, 14:37

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 ^^
Errare humanum est, lupus et agnus, geranium begonia, para bailar la bamba

Eléphanteau du PHP | 29 Messages

18 mars 2014, 14:42

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
Errare humanum est, lupus et agnus, geranium begonia, para bailar la bamba

ViPHP
xTG
ViPHP | 7331 Messages

18 mars 2014, 17:14

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... :|

Eléphanteau du PHP | 29 Messages

18 mars 2014, 17:18

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é. :)
Errare humanum est, lupus et agnus, geranium begonia, para bailar la bamba

ViPHP
ViPHP | 1996 Messages

18 mars 2014, 17:54

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)
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 29 Messages

18 mars 2014, 17:58

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
Errare humanum est, lupus et agnus, geranium begonia, para bailar la bamba

ViPHP
ViPHP | 1996 Messages

18 mars 2014, 18:02

Ok pas de problème : bon bac !
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
xTG
ViPHP | 7331 Messages

18 mars 2014, 21:43

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. :)