Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
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 31/10/2007, 16h40   #1
Membre actif
 
Inscription : janvier 2006
Messages : 389
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : janvier 2006
Messages : 389
Points : 152
Points : 152
Envoyer un message via MSN à dragonfly
Par défaut [POO] probléme avec "unserialize"

Bonjour a tous,
j'ai un petit probléme avec "unserialize".
Je créé un objet que je met dans une session jusque la tout va bien
Code :
1
2
3
4
 
	$utilisateur=new user("visiteur","vu");
	serialize($user);
	$_SESSION['user']=$utilisateur;
Le probléme c'est que quand je veut recupérer cet objet, j'ai une erreur comme ceci

Code :
1
2
3
4
 
<b>Warning</b>:  unserialize() expects parameter 1 to be string, object given in <b>F:\Site PHP\Objet
 
\PHP\connection.php</b> on line <b>24
Voici mes codes (j'ai essayé avec les 2
Code 1
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
if(!isset($_GET['login']) && !isset($_GET['pass']) ){
	echo "ERREUR DE CHARGEMENT DE LA PAGE WEB";
}else{
	include("../class/connection.class.php");
	include("../class/user.class.php");
 
	$utilisateur = new user("visiteurr","quetchi");
	session_start();
	$utilisateur=$_SESSION['user'];
	$utilisateur=unserialize($utilisateur);
...
Code 2
Code :
1
2
3
4
5
6
7
8
9
10
 
if(!isset($_GET['login']) && !isset($_GET['pass']) ){
	echo "ERREUR DE CHARGEMENT DE LA PAGE WEB";
}else{
	include("../class/connection.class.php");
	include("../class/user.class.php");
 
	session_start();
	$contenu=$_SESSION['user'];
	$utilisateur=unserialize($contenu);
Si quelqu'un a une idée ( je suis sur que c'est tout bête mais je trouve pas)
__________________
La vie n'est qu'un grain d'éphémère sur une plage d'illusions
Mon CV en ligne ICI
dragonfly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2007, 17h08   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Tout d'abord il est inutile de sérialiser/désérialiser vous-mêmes vos objets : PHP le gère déjà, comme il ferait avec une variable scalaire.

Votre appel serialize est réalisée dans le vide :
Vous ne récupérez pas la valeur retournée par serialize car comme la grande majorité des fonctions PHP, celle-ci ne modifie pas sur place ses paramètres.

Mais cet appel (unserialize) est totalement inutile car si vous regardez bien $_SESSION['user'] doit déjà être un objet User. Le tout étant d'inclure la déclaration de la classe avant l'opération de désérialisation (ici réalisée implicitement par session_start).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2007, 17h16   #3
Membre actif
 
Inscription : janvier 2006
Messages : 389
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : janvier 2006
Messages : 389
Points : 152
Points : 152
Envoyer un message via MSN à dragonfly
Merci,

Donc le serialize je l'enléve mais, dans mon premier exemple,je déclare la classe avant le session_start(); donc ca devrait fonctionner, non?

Sinon un exemple avec du code serait plus clair je pense
__________________
La vie n'est qu'un grain d'éphémère sur une plage d'illusions
Mon CV en ligne ICI
dragonfly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2007, 17h22   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par dragonfly
Donc le serialize je l'enléve mais, dans mon premier exemple
En l'état actuel il ne sert strictement à rien.

Citation:
Envoyé par dragonfly
je déclare la classe avant le session_start(); donc ca devrait fonctionner, non?
Oui, le message d'erreur tant à le prouver ($_SESSION['user'] étant un objet). Un var_dump de cette variable vous permettra de le confirmer.

Citation:
Envoyé par dragonfly
Sinon un exemple avec du code serait plus clair je pense
FAQ : Les objets font-ils bon ménage avec les sessions en PHP 5 ?
julp 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 07h00.


 
 
 
 
Partenaires

Hébergement Web