Jump to content

[Résolu] Objet PHP et session


Recommended Posts

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

Link to comment
Share on other 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 :)

Link to comment
Share on other 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:

Link to comment
Share on other sites

Oulà, je ne crois pas.... :byebye: je pense qu'il faut que l'on parle :yes:

Mon session_start() est en tout début de fichier. En quoi est-ce nécessaire d'avoir la définition de ma classe avant le session_start(); ?

Link to comment
Share on other 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:

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...