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!
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 ?
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.
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';
}
}
?>
Salut! je viens de l<essayer et j<ai toujours le meme resultat.
avant:
$user = $req->fetch();
apres:
$user = $req->fetch(PDO::FETCH_OBJ);
que obtenus tu si du fais un die de var dump de $user ?
die ('<pre>'.var_dump($user,true).'</pre>');
Ca ne change pas grand chose j'obtiens toujours: Notice: Trying to get property of non-object .../login.php on line 15.
en mettant le var_dump apres mon fetch, j'ai ca comme resultat sur une page blanche: bool(false) bool(true)
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.
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