Bonjour,
Je suis bloqué depuis des heures sur un problème qui doit être simple, mais je n'arrive pas à comprendre d'où ça vient et je ne trouve pas de sujet similaire.
Je passe mon objet "site" de ma page1 à ma page2 en le mettant en session avec serialize/unserialize : tout fonctionne, j'affiche bien le nom de mon site en page2, issu de ma BDD.
Mais en page1, le nom du site n'apparait pas (l.24) et il m'affiche Fatal error: Call to a member function nom() on a non-object in C:\Program Files\wamp\www\page1.php on line 24
Si je mets en commentaires la mise en session (l. 21), le nom s'affiche correctement en page1, évidemment plus en page2.
En quoi la mise session de mon objet fait-elle que je ne peux plus l'utiliser dans ma page1 ? Je précise que je ne n'ai pas encore implémenté les méthodes magiques sleep() et wakeup(), si ça peut avoir un rapport...
Merci d'avance pour vos réponses
page1.php :
page2.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <?php session_start(); $id_site = 1; // On crée une instance de PDO $db = new PDO('mysql:host=localhost;dbname=test', 'root', ''); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); // On émet une alerte à chaque fois qu'une requête a échoué. // On charge les classes require_once('classes/site.class.php'); require_once('classes/site.manager.class.php'); // On crée une instance du manager de site $manager = new SiteManager($db); // On récupère les infos du site $site = $manager->get($id_site); // On met l'objet site en session $_SESSION['site'] = serialize($site); ?> <a href="page2.php">Page 2</a> Nom du site : <?php echo $site->nom(); ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?php session_start(); // On charge les classes require_once('classes/site.class.php'); // On récupère l'objet site $site = unserialize($_SESSION['site']); echo $site->nom(); ?>
Partager