IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Message d'erreur : Notice: Trying to get property of non-object ?


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut Message d'erreur : Notice: Trying to get property of non-object ?
    Bonjour,

    voila, j'ai un problème avec ma page de connexion (login.php) a mon espace membre.

    problème que je rencontre : dés que je rentre le bon login et mot de passe aucun problème je suis connecté, mais si je rentre un mauvais login ou mot de passe alors j'ai un message d'erreur : Notice: Trying to get property of non-object in C:\wamp\www\login.php on line 13

    et voici ma page login.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?php
    require_once 'inc/functions.php';
    reconnect_from_cookie();
    if(isset($_SESSION['auth'])){
        header('Location: account.php');
        exit();
    }
    if(!empty($_POST) && !empty($_POST['username']) && !empty($_POST['password'])){
        require_once 'inc/db.php';
        $req = $pdo->prepare('SELECT * FROM users WHERE (username = :username OR email = :username) AND confirmed_at IS NOT NULL');
        $req->execute(['username' => $_POST['username']]);
        $user = $req->fetch();
        if(password_verify($_POST['password'], $user->password)){
            $_SESSION['auth'] = $user;
    $_SESSION['flash']['success'] = 'Vous êtes maintenant connecté';
    if($_POST['remember']){
        $remember_token = str_random(250);
        $pdo->prepare('UPDATE users SET remember_token = ? WHERE id = ?')->execute([$remember_token, $user->id]);
        setcookie('remember', $user->id . '==' . $remember_token . sha1($user->id . 'ratonlaveurs'), time() + 60 * 60 * 24 * 7);
    }
            header('Location: account.php');
            exit();
        }else{
            $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte';
        }
    }
    ?>
    <?php require 'inc/header.php'; ?>
     
        <h1>Se connecter</h1>
     
        <form action="" method="POST">
     
            <div class="form-group">
                <label for="">Pseudo ou email</label>
                <input type="text" name="username" class="form-control"/>
            </div>
     
            <div class="form-group">
                <label for="">Mot de passe <a href="forget.php">(J'ai oublié mon mot de passe)</a></label>
                <input type="password" name="password" class="form-control"/>
            </div>
     
            <div class="form-group">
                <label>
                    <input type="checkbox" name="remember" value="1"/> Se souvenir de moi
                </label>
            </div>
     
            <button type="submit" class="btn btn-primary">Se connecter</button>
     
        </form>
     
    <?php require 'inc/footer.php'; ?>
    merci de me renseigner sur mon erreur éventuelle.. je débute

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $user = $req->fetch(PDO::FETCH_OBJ);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    Salut et merci de m'avoir répondu, malheureusement toujours le même problème aucun changement !

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il doit y avoir un problème avec la requête, active les erreurs PDO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    apparemment ton code est déjà présent dans le fichier db.php

    voici le contenu du fichier db.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $pdo = new PDO('mysql:dbname=pag;host=localhost', 'root', '');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
    Nom : erreur.png
Affichages : 4167
Taille : 31,6 Ko

    J'ai téléchargé les sources de cet espace membre sur un autre site.

    j'ai envoyé un message a l'auteur mais je n'ai toujours aucune nouvelle pour le moment.

    Sinon dans les commentaires sur la page de grafikart, il y a une personne qui rencontre le même problème mais qui a posté une solution je copie le message de la personne ici :

    J'ai eu le même soucis, il apparais quand ont entre un 'username' incorrect uniquement (en tous cas pour mon cas).
    J'ai du ajouter les mêmes lignes de mon 'if(password_verify)' dans le 'else'

    avant :
    else{
    $_SESSION['flash']['danger'] = "Identifiant ou mot de passe incorrecte";
    }

    après:
    else{
    session_start();
    $_SESSION['flash']['danger'] = "Identifiant ou mot de passe incorrecte";
    header('location: login.php');
    exit();
    }

    Et celà marche pour moi et sans erreur php.
    J'ai bien-sur essayé cette solution et elle fonctionne, je n'ai plus de message d'erreur php mais je suis de nature perfectionniste et je me demande réellement si c'est la bonne solution enfin est-ce propre ? ..

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Non c'est bien ça, le "else" est mal placé.
    Plus simplement que la solution proposée qui fait une redirection, on peut replacer le else :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    if(!empty($_POST['username']) && !empty($_POST['password'])){
        require_once 'inc/db.php';
        $req = $pdo->prepare('SELECT id, password FROM users WHERE (username = :username OR email = :username) AND confirmed_at IS NOT NULL');
        $req->execute(['username' => $_POST['username']]);
        if ($user = $req->fetch() {
    		if(password_verify($_POST['password'], $user->password)){
    			$_SESSION['auth'] = $user;
    			$_SESSION['flash']['success'] = 'Vous êtes maintenant connecté';
    			if($_POST['remember']){
    				$remember_token = str_random(250);
    				$pdo->prepare('UPDATE users SET remember_token = ? WHERE id = ?')->execute([$remember_token, $user->id]);
    				setcookie('remember', $user->id . '==' . $remember_token . sha1($user->id . 'ratonlaveurs'), time() + 60 * 60 * 24 * 7);
    			}
    			header('Location: account.php');
    			exit();
    		}
    	}
    	else{
    		$_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte';
    	}
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    Parse error: syntax error, unexpected '{' in C:\wamp\www\pag\procedural\login.php on line 16

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Notice: Trying to get property of non-object in
    Par vhellers dans le forum Langage
    Réponses: 3
    Dernier message: 27/06/2013, 12h04
  2. [Joomla!] [Adsmanager] Notice: Trying to get property of non-object in C:\Program Files\EasyPHP
    Par ninobrown dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 13/04/2009, 21h13
  3. Réponses: 3
    Dernier message: 08/02/2008, 20h02
  4. Réponses: 11
    Dernier message: 28/08/2007, 12h06
  5. [POO] Erreur Trying to get property of non-object
    Par Niouts dans le forum Langage
    Réponses: 14
    Dernier message: 13/09/2006, 10h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo