Session et objet
Bonjour,
Je viens (encore) vous exposer un de mes nombreuses problèmes que je rencontre actuellement.
Alors voila, lorsqu'un utilisateur s'identifie sur mon site, je crée une session. A partir de son pseudo, je récupére les informations de l'utilisateur et hydrate un objet User. J'ai alors essayé de mettre cette objet User dans une session, mais il m'ait alors impossible de l'utiliser.
<?php
// lors de l'identification
$user = new UserTable()::findByLogin($_POST['login']);
session_regenerate_id();
$_SESSION['user'] = $user;
?>
<?php
// sur une page quelconque
$_SESSION['user']->getLogin(); // Cette partie qui pose problème
?>
Y-a-t-il une solution pour passer un objet dans une session, ou doit-on créer une valeur pour chaque attribue de l'objet ?
Merci d'avance Mimos@
Réponses apportées à cette discussion
Salut,
Je te recommande déjà de revoir les tutoriels de POO et des sessions de ce site car le peu de code que tu nous présentes est déjà syntaxiquement archi chaud. Essaies déjà de comprendre où se situent tes erreurs, corrige-les et puis ensuite on pourra voir pour t'expliquer la suite ;)
Emacs si tu expliquais pourqu'oi sa ne va pas sa serait cool ^^ on pourrait tous progresser :p ;)
Emacs si tu expliquais pourqu'oi sa ne va pas sa serait cool ^^ on pourrait tous progresser :p ;)
Si sa se voit très bien :
- Je pense qu'il voulait parler de la méthode appelé statiquement alors qu'il y a un new.
$user = new UserTable()::findByLogin($_POST['login']);
Et il reste encore une erreur avec le tableau de session...
Pour les sessions, j'ai essayé en utilisant serialize et unserialize. Cette technique marche mais je sais pas si c'était bien sa l'erreur.
Tu es obligé de sérialiser ton objet si tu veux le passer en session mais ce n'est pas très recommandé. L'idéal c'est juste de passer en session l'ID du user qui est en base, puis de le récupérer sur chaque page et d'interroger la BDD pour aller chercher ses infos et recréer l'objet User.
allez je te fais un dessin ^^
<?php
//...tu récupères le membre
$SESSION['idMembre'] = $membre->getId();
//...il se balade sur tes pages
$membre = MembreTable::getMemberById($_SESSION['idMembre']);
?>