Bonjour,
Cela fait un petit moment que j'ai ce message d'erreur quand j'essaie de me connecter sur mon site et que je tape des mauvais identifiants :
Notice: Trying to get property of non-object in C:\MAMP\PHP\OpenClassrooms\Site\membres\app\function\form-signin.php on line 18
Voici mon code
<?php
reconnect_from_cookie();
if(isset($_SESSION['auth'])){
header('Location: account.php');
exit();
}
if(!empty($_POST) && !empty($_POST['pseudo']) && !empty($_POST['password'])){
$req = $pdo->prepare('
SELECT *
FROM members
WHERE (pseudo = :pseudo
OR email = :pseudo)
AND confirmed_at IS NOT NULL');
$req->execute(['pseudo' => $_POST['pseudo']]);
$user = $req->fetch();
if(password_verify($_POST['password'], $user->password)){
$_SESSION['auth'] = $user;
$_SESSION['flash']['info'] = "<p style='text-align: center'>Vous êtes maintenant connecté</p>";
if($_POST['remember']){
$remember_token = str_random(250);
$pdo->prepare('UPDATE members 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'] = "<p style='text-align: center'>Identifiant ou mot de passe incorrecte</p>";
}
}
Et quand j'essaie de changer le fetch() en fetchAll() et le $user->password en $user['password']
j'ai ce message d'erreur qui s'affiche
Fatal error: Uncaught Error: Cannot use object of type stdClass as array in C:\MAMP\PHP\OpenClassrooms\Site\membres\app\function\form-signin.php on line 18
J'ai suivi la video de GrafikArt (https://www.youtube.com/watch?v=5vKNKffGmvw)
qui traite de ce sujet mais je n'obtiens pas ma réponse. Quelqu'un pourrait m'aider s'il vous plait ?