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 15/03/2006, 19h14   #1
tio
Futur Membre du Club
 
Inscription : août 2005
Messages : 44
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 44
Points : 19
Points : 19
Par défaut Perte de session à chaque page, chaque refresh

Bonsoir à tous.
Voici mon problème.
J'ai une page shop.php qui débute par :
Code :
1
2
3
4
5
6
7
8
 
<?session_start();
	include "code_const.php";
	include "code_print.php";
	include "code_queries.php";
	include "code_metier.php";
	include "class_produit_cart.php";
	include "class_cart.php";
Je travaille ensuite sur des variables de session de cette manière en utilisant
Code :
1
2
3
4
5
 
	if(!isset($_SESSION["Panier"]))
	{
		$_SESSION["Panier"] =& new Cart();
	}
ou Cart est une classe définie dans "class_cart.php"
Il se trouve que $_SESSION["Panier"] est réinitialisé à chaque refresh de la page et que le repertoire \tmp a un fichier session de plus a chaque refresh...
Je ne comprends plus.
Je fais bien session_start() au debut de chaque page..
Je precise que j'utilise easyphp en local.
Merci de votre aide.
tio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 19h50   #2
Membre émérite
 
Avatar de macbook
 
Inscription : février 2006
Messages : 840
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 840
Points : 924
Points : 924
C'est plutôt bizarre en effet. Sinon c'est bien raisonable d'instancier une classe dans une variable de session ?
__________________
Consultant idéaliste.
macbook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 19h58   #3
tio
Futur Membre du Club
 
Inscription : août 2005
Messages : 44
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 44
Points : 19
Points : 19
Salut.
Pour etre bizarre... lol.
Ou est le probleme d'instancier ma classe en session ?
C'est mon objet Panier, et je ne veux pas le stocker en bdd.
Pour info, meme une variable toute bete, incrémentée à chaque fois en haut de ma page perd sa valeur...
tio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 20h00   #4
Candidat au titre de Membre du Club
 
Inscription : août 2003
Messages : 29
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 29
Points : 14
Points : 14
Bonjour,

Peut être que tu devrais conserver ton objet entre sessions grâce à ces fonctions :

serialize()
unserialize()

La fonction serialize transforme ton objet en une sorte de variable unique (un peu comme implode pour un tableau)
Et la fonction unserialize transforme ta variable en l'objet d'origine (un peu comme explode).

Donc ce que tu devras faire ca pour faire passer ton objet en session :

Code :
1
2
3
4
5
6
7
8
9
10
 
if(!isset($_SESSION['Panier'])){
$objet = new Cart();
}
else
{
$objet = unserialize($_SESSION['Panier']);
}
/* ton code */
$_SESSION['Panier'] = serialize($objet);
Enfin c'est une idée, je ne suis pas sur de moi.

Bon courage!
CritikKiller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 20h43   #5
Membre émérite
 
Avatar de macbook
 
Inscription : février 2006
Messages : 840
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 840
Points : 924
Points : 924
A moins que ce soit l'instanciation par référence ? En tout cas il y a un truc qui me gène mais je n'arrive pas à mettre le doigt dessus.

C'est quoi ta version de PHP ? En PHP5 il y a des fonctions magiques : __sleep et __wakeup

http://fr2.php.net/manual/fr/language.oop.magic-functions.php
__________________
Consultant idéaliste.
macbook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 21h01   #6
tio
Futur Membre du Club
 
Inscription : août 2005
Messages : 44
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 44
Points : 19
Points : 19
Me voici de retour après un bon repas..
J'ai enlevé temporairement mes classes.
J'essaie d'incrementer simplement une variable à chaque tour, ça ne marche pas.
Je suis en php 4.3.10 (easyphp)
tio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2006, 02h52   #7
tio
Futur Membre du Club
 
Inscription : août 2005
Messages : 44
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 44
Points : 19
Points : 19
Oh purée.
C'était un param par défaut de php qui ne transmettait pas les sessions de page en page.....
Merci de votre aide. Désolé du dérangement. A charge de revanche.
tio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2006, 11h12   #8
Nouveau Membre du Club
 
Inscription : avril 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 100
Points : 32
Points : 32
c t koi le param par defaut qui ne transmettait pas les sessions ?
ca se trouve dans php.ini ?
__________________
"Un peu d'huile, de la viande, du broco et j'obtiens un bon BoeufBrocoli !"
BoeufBrocoli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2006, 13h01   #9
tio
Futur Membre du Club
 
Inscription : août 2005
Messages : 44
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 44
Points : 19
Points : 19
Salut.
session.use_trans_sid devait être a OFF, je 'lai mis à ON.
C'est probablement dans php.ini oui.
J'espere que ca t'aidera.
A+
tio est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h40.


 
 
 
 
Partenaires

Hébergement Web