Bonjour,

En se basant sur les deux tutos de Grafikart (Gestion d'un espace membre et refactorisation) je viens de créer un espace membre (en utilisant les classes et objets) .
Une fois que l'utilisateur est connecté sur la page "account.php", je voudrais que s'affiche "Bienvenue .$USERNAME.", du coup j'obtiens une erreur: "UNDEFINED PROPERTY: STDCLASS::$USERNAME".
Le code que j'utilise:

<span>Bienvenue <?= $_SESSION['auth']->username ?></span>

Merci pour votre aide.

9 réponses


Bonsoir,
Cela veut dire que $_SESSION['auth'] n'a pas d'élément username dans l'objet.
Avez-vous bien fait un session_start(); ?
Que donnes un var_dump($_SESSION['auth']); ?

kraster
Auteur

Carouge10 Merci de votre réponse rapide, j'utilise un autoloader (require 'inc/bootstrap.php';) je suppose qu'il doit automatiquement demarrer la session dès que j'en aurais besoin.
le var_dump donne Undefined variable: _SESSION !!!

Tu as essayer en mettant un session_start(); au début de ton code ?

kraster
Auteur

Oui j'ai déja essayé mais ça sort l'erreur: "A session had already been started - ignoring session_start()"

Vous supposez ? Il serait bien de ne pas faire de copier-coller de code sans en étudier le contenu. Surtout pour le modifier.
Il faut mettre le session_start(); sur le fichier index.php qui est appelé en premier.
Quelle est l'aborescence de votre site ?

kraster
Auteur

Une petite remarque : ce probleme se passe seulement lors de la confirmation du compte (redirection vers la page account.php apres avoir cliqué sur "activer mon compte"). et si l'utilisateur se déconnecter et se reconnecter tout rentre dans l'ordre !!

Salut,

on dirait qu'il y a 2 façons de se connecter,
une en cliquant sur 'connexion', et une en cliquant sur 'activer mon compte'.

On dirait que tu ne rempli la $_SESSION QUE quand tu clic sur 'connexion'.
Regarde si tu le fais bien aussi quand on clic sur 'activer mon compte' pour voir.

kraster
Auteur

Je connecte l'utilisateur directement une fois le compte est confirmé et là ça me sort cette erreur, j'ai modifié le code en faisant une redirection vers la page login apres la confirmation et lorsque je me connecte ça marche pas d'erreur !

kraster
Auteur

Trouvé les amis ! et merci infiniment pour votre aide, l'erreur venait d'ici:

$user = $db->query('SELECT * FROM users WHERE id = ?', [$user_id])->fetch();

au lieu de:

$user = $db->query('SELECT confirmation_token FROM users WHERE id = ?', [$user_id])->fetch();