Page 1 sur 1

Variable de session & classes [résolu]

Posté : 15 avr. 2010, 16:29
par Ced
Bonjour à tous!

Cela fait bien trop d'heures que je reste coincé sur un problème et n'ayant pas trouvé de solutions sur le net, je m'en remet à vous!

Je crée un site et je bloque au niveau de la gestion des sessions d'utilisateurs. Tout marchait bien jusque là mais j'ai décidé d'intégrer une classe 'Utilisateur' pour me simplifier la vie et avoir un code plus joli... et du coup c'est le bordel!
J'ai le message d'erreur suivant :
" The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Utilisateur" of the object you are trying to operate on was loaded_before_unserialize() gets called or provide a __autoload() function to load the class definition in C:\tralala\login.php on line 22 "
Apparemment cela signifie qu'il n'arrive pas à atteindre ma classe.
Voici la structure de mon site :

Page index.php :
(en premieres lignes de mon body) :
include("methodes.php");
include("classes.php");
include("bandeau.php"); // dans ce bandeau j'inclue login.php

Page login.php :
include('affichLog.php');
Si la variable de session "isConnected" = false : J'affiche le form permettant de ce connecter dont la cible est login.php.
Sinon j'affiche la variable de session "Utilisateur" (cette variable est une instance la classe "Utilisateur")

Page affichLog.php :
Si $_SESSION['Utilisateur'] n'est pas définie alors $_SESSION['isConnected'] = false ;

Si $_POST['txtIdentifiant'] est définit :
Je récupère les données dans ma bdd.
$_SESSION['Utilisateur'] = new Utilisateur;
$_SESSION['Utilisateur']->detailsUtil($donnees['pseudoUtil'], ect...) // fonction de la classe qui alimente les variables de l'objet
$_SESSION['isConnected'] = true;




Et donc, quand je me connecte, la page login.php affiche bien le nom de l'utilisateur mais dès que je rafraichis la page ou que je change de page, j'ai le message d'erreur ci-dessus.
J'en déduit qu'il arrive à atteindre ma classe la première fois mais dès qu'il s'agit d'utiliser la SESSION['Utilisateur'] (instance de ma classe Utilisateur) il ne retrouve la classe...

Voilà, merci d'avance pour votre aide.

Ced.

Re: Variable de session & classes

Posté : 15 avr. 2010, 16:34
par stealth35
lu, fais un
var_dump($_SESSION)
(tu vas peu être trouvé un __PHP_Incomplete_Class)

Re: Variable de session & classes

Posté : 15 avr. 2010, 16:36
par Ced
Merci pour ta réponse, je ne connaissais pas cette fonction.
A quelle moment dois-je l'exécuter ?

Re: Variable de session & classes

Posté : 15 avr. 2010, 16:37
par stealth35
Merci pour ta réponse, je ne connaissais pas cette fonction.
A quelle moment dois-je l'exécuter ?
oh bah quand même :wink:

execute la apres (dans ton Page login.php :)
include('affichLog.php');

Re: Variable de session & classes

Posté : 15 avr. 2010, 16:50
par Ced
Ok, donc tout de suite après la connexion var_dump() affiche les infos de ma classes mais une fois que je rafraichis la page, les infos sont toujours là mais il rajoute effectivement un __PHP_Incomplete_Class .

Voici ma classe Utilisateur :

Code : Tout sélectionner

class Utilisteur { var $idUtil, $pseudoUtil //ect... function Utilisateur () { } function detailsUtil($idUtil,) //ect... { $this->idUtil = $idUtil; //ect... } }

Re: Variable de session & classes

Posté : 15 avr. 2010, 16:52
par stealth35
a chaque fois que tu fais un session_start, tu dois vérifier que ta classe est bien incluse

Re: Variable de session & classes

Posté : 15 avr. 2010, 17:23
par Ced
J'ai mis une variable de session dans classes.php qui prends la valeur true dès que la page est lancée.
En dessous du session_start() :

Code : Tout sélectionner

if(!isset($_SESSION['classeIncluse'])) include('classes.php');
Et j'ai enlevé l'include qu'il y avait plus bas.

Lorsque je tente une connexion, j'obtiens :
Fatal error: Class 'Utilisateur' not found in C:\...

Re: Variable de session & classes [résolu]

Posté : 15 avr. 2010, 17:42
par Ced
Problème résolu !

Enfait il faut inclure la déclaration de la classe AVANT le session_start(); #-o

Merci beaucoup à toi pour ton aide stealth35 :wink:

Re: Variable de session & classes [résolu]

Posté : 15 avr. 2010, 17:44
par stealth35
Enfait il faut inclure la déclaration de la classe AVANT le session_start(); #-o
oui et a chaque fois :wink: