Tuto gestion espace membre

Par madmax9922, il y a 10 ans


Bonjour j'ai telechargé le tuto sur la gestion d'un espace membre je commence a peine a coder en php. j'ai cette erreur lorsque que j'essaye de tester le login avec un faux mot de passe: Notice: Trying to get property of non-object in...\ login.php on line 13.
Merci d'avance!

15 réponses

Damarus, il y a 10 ans

Salut, il va nous falloir du code sinon on ne va pas faire grand chose. :)

arnich, il y a 10 ans

As-tu créé la base de données ?
As tu modifié les fichier de config pour pointer vers la bdd ?
La connection à la bdd se fait bien ?

Martin, il y a 10 ans

Hello,

Ta variable $user n'est pas du type objet.

$req->fetch(PDO::FETCH_OBJ);
Laznet, il y a 10 ans

madmax9922
Pour que ton code soit plus facilement lisible tu pourrais lui appliquer l'affichage "Code".

En cliquant sur le bouton </> dans la barre de l'éditeur.

Car comme ça ton code peut être difficile à lire.

madmax9922, il y a 10 ans
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'; } } ?>
cyyynthia, il y a 10 ans

Il faut que tu ajoutes

PDO::FETCH_OBJ

à ton fetch() :)

madmax9922, il y a 10 ans

Salut! je viens de l<essayer et j<ai toujours le meme resultat.
avant:

$user = $req->fetch();

apres:

$user = $req->fetch(PDO::FETCH_OBJ);
cyyynthia, il y a 10 ans

que obtenus tu si du fais un die de var dump de $user ?

die ('<pre>'.var_dump($user,true).'</pre>');
madmax9922, il y a 10 ans

Ca ne change pas grand chose j'obtiens toujours: Notice: Trying to get property of non-object .../login.php on line 15.

cyyynthia, il y a 10 ans

Tu l'a mis ou dans ton code ? essayé de le mettre juste après le fetch

madmax9922, il y a 10 ans

en mettant le var_dump apres mon fetch, j'ai ca comme resultat sur une page blanche: bool(false) bool(true)

madmax9922, il y a 10 ans

j'ai essayé avec un usager deja enregisté et ca fonctionne. lorsque j'essaye avec un nouvel usager non inscrit j'obtient la meme erreur:
Trying to get property of non-object .../login.php on line 13.

maxslayer44, il y a 10 ans

Bonsoir,

Tente de remplacer ta condition par

if($user != false && password_verify($_POST['password'], $user->password))

EDIT: j'ai remplacé null par false après consultation de la doc

madmax9922, il y a 10 ans

Merci! c'est tres apprecié ca fonctionne nickel :)

maxslayer44, il y a 10 ans

De rien, pense à marquer ton sujet comme résolu :)