Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/01/2011, 11h30   #1
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 129
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 129
Points : 38
Points : 38
Par défaut smarty session et objet

slt
je m'arrache les cheveux avec l'utilisation d'objet dans une session et smarty.

je cherche a utiliser un objet sur plusieurs pages,

mon code fonctionne la première fois mais quand je clic de nouveau sur mon menu il me retourne

Code :
1
2
 
__PHP_Incomplete_Class
j'ai lu la doc sur les session et les objets, j'ai compris que l'objet devait etre déclaré avant le départ de la session, mais rien a faire.
j'utilise smarty est ce que cela pourrait être la cause de mes ennuis ??

voici le code
ma classe InteractifMenu
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
 
<?php
class InteractifMenu {
 
	private static $instance = NULL;
 
	private $menu;
 
	private $id;
 
	private $index;
 
	function __construct()
	{
		$this->index=0;
 
		$this->menu=array();
	}
 
	public static function getInstance() 
	{
 
		if (!self::$instance)
    		{
    			self::$instance = new InteractifMenu();
 
    		}
		return self::$instance;
	}
 
 
	public function test($id,$menu)
	{
		$this->menu[$id]=$menu.$this->index++;
		echo $this->index."</br>";
	}
 
	public function __get($id)
	{
		return $this->menu[$id];
	}
 
 
}
?>
mon autoload
Code :
1
2
3
4
5
6
7
 
<?php
 
 function __autoload($class_name) {
   require_once $class_name.'.php';
 }
?>
ma function smarty qui utilise ma classe
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
<?php
 
include_once 'autoload.php';
 
function smarty_insert_interactiveMenu4($params,&$smarty)
{
 
 
 
session_start();
 
	if(!isset($_SESSION['menu']))
	{
		echo "session menu n'existe aps ";
 
		$_SESSION['menu']=InteractifMenu::getInstance();
		$menu=$_SESSION['menu'];
		var_dump($menu);
	}else
	{
 
		echo "sesion menu existe ";
		$menu=$_SESSION['menu'];
 
 
 
		//$menu->test($smarty->oPageCurrent->getName(),"toto");
 
		 var_dump($menu);
	}
}
?>
donc la première fois que j'appel le script ca marche, car la var de session n'as pas encore était crées, mais la deuxieme fois lorsque la variable existe dejà j'ai ce fameux message. je rame de puis deux jours ......

si qq1 a une idée .....
merci A+
bruno.rotrou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 11h42   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Hello

Citation:
j'ai compris que l'objet devait etre déclaré
Ce sont les classes qui doivent être déclarées avant le session_start();

Fais les includes statiques (sans utiliser l'autoloader) avant de démarer ta session et ça devrait rouler.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 16h56   #3
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 129
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 129
Points : 38
Points : 38
Par défaut session et objet

non ca ne marche pas non plus avec l'include manuel
la je seche ....
merci
A+
bruno.rotrou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 21h48   #4
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 129
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 129
Points : 38
Points : 38
Par défaut session et objet

slt
j'ai trouvé une solution; il se trouve que dans le cms que j'utilise, les sessions sont démarrées avant la déclaration de ma classe, la session ne deserialise pas bien mon objet.
la solution consiste a utiliser une fonction qui deserialise l'objet correctement et le renvois? j'ai trouvé cette fonction sur le net et j'avoue que c'est astucieux.

la fonction :
Code :
1
2
3
4
5
6
7
 
function fixObject (&$object)
{
  if (!is_object ($object) && gettype ($object) == 'object')
    return ($object = unserialize (serialize ($object)));
  return $object;
}
l'utilisation :
Code :
1
2
 
$menu=fixObject($_SESSION['menu']);
voila j'espère que cela vous sera utile.
A+
bruno.rotrou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 23h50   #5
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Bien joué !
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h27.


 
 
 
 
Partenaires

Hébergement Web