Bonjour,

Dernièrement j'ai suivi le tutoriel suivant : <a href="http://www.grafikart.fr/tutoriels/php/gestion-membre-229">Gestion membre en PHP</a>
.

Attentivement je prends note et arrivé à la fin du tutoriel, j'essaie donc de surfer de pages en pages sur mon Localhost. J'essaie donc de me connecter à login.php ; Celui-ci comporte ce code :

<?php
require_once '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 '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_start();
        $_SESSION['auth'] = $user;
        $_SESSION['flash']['success'] = 'Vous êtes maintenant connecté';
        if($_POST['remember']){
            $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 incorrect';
    }
}
?>
<?php require '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" title="username"/>
        </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" title="password" />
        </div>
        <div class="form-group">
            <label>
                <input type="checkbox" name="remember" title="remember" value="1" /> Se souvenir de moi
            </label>
        </div>
        <button type="submit" class="btn btn-primary">Se connecter</button>
    </form>
<?php require 'footer.php'; ?>

Mon problème est le suivant (vous pouvez copier coller ce code dans votre éditeur de code, c'est le tableau qui affiche l'erreur en question) :

<table class="xdebug-error xe-notice" dir="ltr" border="1" cellspacing="0" cellpadding="1">
<tbody><tr><th align="left" bgcolor="#f57900" colspan="5"><span style="background-color: #cc0000; color: #fce94f; font-size: x-large;">( ! )</span> Notice: Trying to get property of non-object in C:\wamp\www\cours\Nouveau dossier\login.php on line <i>13</i></th></tr>
<tr><th align="left" bgcolor="#e9b96e" colspan="5">Call Stack</th></tr>
<tr><th align="center" bgcolor="#eeeeec">#</th><th align="left" bgcolor="#eeeeec">Time</th><th align="left" bgcolor="#eeeeec">Memory</th><th align="left" bgcolor="#eeeeec">Function</th><th align="left" bgcolor="#eeeeec">Location</th></tr>
<tr><td bgcolor="#eeeeec" align="center">1</td><td bgcolor="#eeeeec" align="center">0.0020</td><td bgcolor="#eeeeec" align="right">256176</td><td bgcolor="#eeeeec">{main}(  )</td><td title="C:\wamp\www\cours\Nouveau dossier\login.php" bgcolor="#eeeeec">..\login.php<b>:</b>0</td></tr>
</tbody></table>

L'erreur est :

Notice: Trying to get property of non-object in C:\wamp\www\cours\Nouveau dossier\login.php on line 13

J'utilise WAMP et ma version de PHP actuelle est : 5.5.12.

Quelqu'un aurait-il la solution miracle pour ne plus avoir cette erreur et que je puisse tout de même pouvoir me connecter à login.php et ainsi être redirigé sur account.php.

J'ai recopié le code tel que Jonathan le noté et le commenté. Je me suis relu et j'ai comparé avec la vidéo et il n'y a à premièrement vue pas d'erreurs. Je ne vois pas d'ou cela peut venir.

Merci d'avance à tous et à toutes.

Neil

10 réponses


Xen0risDEV
Réponse acceptée
$user = $req->fetch(PDO::FETCH_OBJ);

Le pb intervient lorsque tu veux lire " $user->password' et l'erreur dit que la propriété 'password' n'existe pas
Soit le champs 'password' n'existe pas dans la table User, soit la requête ne retourne aucune ligne
essaye de lancer la requête à la main (phpmyadmin) pour voir.

Neil
Auteur

Bonsoir, merci pour vos réponses, n'étant pas chez-moi, je verrai et aviserai selon vos dires, encore merci et dans l'attente de corriger ça je vous souhaite une excellente soirée. A la prochaine.

Bonne soirée à vous :)

Bonjour , j'ai le même probléme .. sauf que lorsque j'entre un bon password tout va bien j'arrive sur account.php , mais si je me trompe j'ai la même erreur que Neil

Bonjour,
pouvez-vous montrez votre code ?

Le code est exactement le même que celui proposé dans les sources du projet , je pense que ça doit venir d'un module de Php que je n'ai pas activé ?

Bonjour, comme citée ci-dessu tenté cela :
[quote]

$user = $req->fetch(PDO::FETCH_OBJ);

[/quote]

l'erreur persiste malgrés tout :/

Pouvez vous mettre votre code ?