Objet et variables de session

Objet et variables de session - PHP - Programmation

Marsh Posté le 31-12-2006 à 11:45:41    

Bonjour,
 
J'ai un problème avec les variables de session, et je me demande si ça ne vient pas d'OVH (mon hébergeur).
 
Sur un extranet, j'ai un formulaire d'identification qui crée un objet utilisateur lorsque l'authentification a réussi. Il place cet objet dans une variable de session.
 
Ce qui permet, sur les autres pages, de tirer de l'objet le nom, le prénom, l'e-mail, etc ... selon la page. Tout ceci fonctionne très bien ... en local avec WAMP, mais dès que je le mets sur le serveur, ça bug.
 
Voici les extraits du code :
 
Script d'identification :

Code :
  1. $objet = new Utilisateur($login, $nom, $prenom, $email);
  2. $_SESSION['utilisateur'] = serialize($objet);


 
 
Page qui utilise l'objet

Code :
  1. if (isset($_SESSION['utilisateur'])) {
  2.      $objet = unserialize($_SESSION['utilisateur']);
  3.      $nom = $objet->getNom();
  4.      $prenom= $objet->getPrenom();
  5.      $email = $objet->getEmail();
  6. }
  7. else { ...}


 
La première fois, ça marche, la seconde, ça me dit :  
Fatal error: Call to a member function getNom() on a non-object in [...] on line 14
 
Après quelques tests, j'ai l'impression que ça vient de la fonction serialize/unserialize. lorsque je fait un echo de la variable de session, la première fois j'ai une chaîne de charactères, la seconde une référence objet.

Reply

Marsh Posté le 31-12-2006 à 11:45:41   

Reply

Marsh Posté le 01-01-2007 à 19:28:36    

Il n'est absolument pas nécessaire de sérialiser/désérialiser les objets qu'on met dans $_SESSION ; c'est fait de façon automatique et transparente.


Message édité par sielfried le 01-01-2007 à 19:29:04

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 04-01-2007 à 16:07:12    

Par contre faut que ta déclaration de la classe de ton objet précède ton session_start() ;)

Reply

Marsh Posté le 05-01-2007 à 10:20:05    

Merci pour ces précisions. J'avais pris de mauvaises habitudes donc !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed