Aller au contenu

[Résolu] Objet PHP et session


Messages recommandés

Bonjour,

Je rencontre un petit soucis avec la POO. C'est la première fois que j'utilise les objets avec les sessions, et mon problème est le suivant :

J'ai un utilisateur qui se loggue via un formulaire. Si le login et le mot de passe sont précisés, je crée un objet user, qui se charge de l'identification et de l'authentification. Si c'est validé, j'accède à un menu, qui exécute différentes tâches. Je clique donc sur un lien, qui recharge la même page, mais avec des paramètres en plus, ce qui permet grâce à un switch d'exécuter une méthode de l'objet user.

Mais c'est là que le problème se pose, A ce moment là, il me dit que j'exécute une méthode sur quelque chose qui n'est pas un objet, alors que je ne l'ai pas détruit. Voici l'erreur :

Fatal error: Call to a member function on a non-object in c:\program files\easyphp1-8\www\cleanes\index.php on line 110

Ma question est : Est-ce que la transmission de l'objet se fait de manière particulière lorsque l'on utilise les sessions ?

Merci pour votre aide.

Amicalement,

Nicolas

Lien vers le commentaire
Partager sur d’autres sites

Si ta session est toujours existante, c'est que donc tu ne la remplis pas alors.

Essaye, à l'endroit où tu sauves ton objet user dans ta session, de mettre autre chose egalement dans ta session, de non objet, comme une chaine "tutu". Et, avant la ligne 110, là où tu appelles ton objet dans ta session, vérifies que cette chaine tutu existe, par un session_is_registered :)

Lien vers le commentaire
Partager sur d’autres sites

Voilà qui est très intéressant en effet, j'avais un problème de stockage au niveau de la session.

Seulement, maintenant j'ai un nouveau message d'erreur que je ne sais absolument pas interpréter :

Fatal error: main() [<a href='function.main'>function.main</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "entite" 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:\Program Files\EasyPHP 2.0b1\www\index.php on line 111

Kesako ce truc là ?? :byebye:

Lien vers le commentaire
Partager sur d’autres sites

Non, j'ai pas vraiment de doc.

Si tu veux des infos sur les sessions, http://fr2.php.net/session suffit.

Si c'est sur la désérialisation, regarde plus du côté de Java, y aura sans doute plus de doc sur ça.

Tout ce qu'il faut savoir c'est que quand tu désérialise, tu n'as que les données, et il faut qu'ils les associent au squelette de ta classe, donc il faut qu'elle soit déclarée avant, parce que sinon, tu n'as pas les fonctions/procédures de cet objet, c'est pour ça qu'il te parle d'objet incomplet, parce qu'il n'a que les données, pas les fonctions de ta classe.

Voilà, en espérant t'avoir répondu :byebye:

(Sinon, n'hésite pas à demander)

Bonne chance pour la suite :yes:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...