[RESOLU] Problème Notice: Undefined index

Eléphanteau du PHP | 29 Messages

18 mars 2014, 21:46

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. :)
Je suis débutant ^^ je n'étais pas au courant de cette faille avant que vous n'en parliez :-)
Errare humanum est, lupus et agnus, geranium begonia, para bailar la bamba

Eléphanteau du PHP | 29 Messages

25 mars 2014, 09:53

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
Voilà je peux enfin te répondre, désolé de l'attente ^^
Il me retourne :
object(stdClass)[1]
public 'id' => string '1' (length=1)
public 'login' => string 'Tom' (length=3)
public 'pass' => string '9d5e3ecdeb4cdb7acfd63075ae046672 ' (length=33)
public 'credit' => string '127' (length=3)
Errare humanum est, lupus et agnus, geranium begonia, para bailar la bamba

ViPHP
ViPHP | 1996 Messages

25 mars 2014, 10:01

Ok et que te retournes $_POST['pass'] ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Mammouth du PHP | 2278 Messages

25 mars 2014, 10:30

puisque tu connais la valeur de pass:
$pass= (isset($_POST['pass'])) ? mysql_real_escape_string($_POST['pass']) : NULL; //ligne 1 de ta fonction
il est inutile d'écrire:
if(($_POST['pass']) == $user->pass) {
Mais si le pass est nul on peut faire plus simple
if (isset($_POST['pass'])== false)
{
    exit;
}
else
{
$pass = mysql_real_escape_string($_POST['pass']);
}
Oui, le jury, c'est que des débiles profonds, c'est bien connu. Avoir le bac, même en écrivant des conneries, c'est comme avoir le permis en ignorant le code.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 29 Messages

25 mars 2014, 10:33

Ok et que te retournes $_POST['pass'] ?
Quand je fais :

if (isset($_POST['pass']))
{
echo '<br>pass = true';
} else {
echo '<br>pass = false';
}

Et que je lance la page : pass = false, et après avoir cliqué sur le bouton connexion et avoir le message "Mauvais mot de passe pour cet utilisateur", pass = true
Errare humanum est, lupus et agnus, geranium begonia, para bailar la bamba

Eléphanteau du PHP | 29 Messages

25 mars 2014, 10:41

puisque tu connais la valeur de pass:
$pass= (isset($_POST['pass'])) ? mysql_real_escape_string($_POST['pass']) : NULL; //ligne 1 de ta fonction
il est inutile d'écrire:
if(($_POST['pass']) == $user->pass) {
Mais si le pass est nul on peut faire plus simple
if (isset($_POST['pass'])== false)
{
    exit;
}
else
{
$pass = mysql_real_escape_string($_POST['pass']);
}
Oui, le jury, c'est que des débiles profonds, c'est bien connu. Avoir le bac, même en écrivant des conneries, c'est comme avoir le permis en ignorant le code.
Ouiiiii merci ! ça fonctionne ! *courbettes*
De toute façon mon site ne sera qu'en local, et puis ce projet est fait sans cours HTML, PHP etc... J'ai dû tout apprendre de zéro sans compter sur mes professeurs, alors bon...
Errare humanum est, lupus et agnus, geranium begonia, para bailar la bamba