nicocolt Posté(e) le 29 mai 2007 Partager Posté(e) le 29 mai 2007 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 More sharing options...
Spaz001 Posté(e) le 29 mai 2007 Partager Posté(e) le 29 mai 2007 'Lut, Non, il n'y a pas de manière particulière. Je dirais que ton problème vient que la session n'est pas conservée. Affiche au début de tes pages ton id de session pour voir Lien vers le commentaire Partager sur d’autres sites More sharing options...
nicocolt Posté(e) le 29 mai 2007 Auteur Partager Posté(e) le 29 mai 2007 Si la session n'est pas conservée, le tableau $_SESSION est automatiquement détruit, non ? Dans mon cas, il est toujours existant. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 29 mai 2007 Partager Posté(e) le 29 mai 2007 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 More sharing options...
nicocolt Posté(e) le 29 mai 2007 Auteur Partager Posté(e) le 29 mai 2007 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à ?? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 29 mai 2007 Partager Posté(e) le 29 mai 2007 As tu bien inclus la définition de ta classe user avant le session_start ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
nicocolt Posté(e) le 29 mai 2007 Auteur Partager Posté(e) le 29 mai 2007 Oulà, je ne crois pas.... je pense qu'il faut que l'on parle 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(); ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 29 mai 2007 Partager Posté(e) le 29 mai 2007 Parce que sinon ta session ne sait pas comment déserializer ton objet :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
nicocolt Posté(e) le 29 mai 2007 Auteur Partager Posté(e) le 29 mai 2007 Ca a le mérite d'être clair Et en effet cela fonctionne, merci !!!!! As-tu une doc qui explique clairement ce sytème de sérialisation avec les sessions ? Amicalement, Nicolas Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 29 mai 2007 Partager Posté(e) le 29 mai 2007 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 (Sinon, n'hésite pas à demander) Bonne chance pour la suite Lien vers le commentaire Partager sur d’autres sites More sharing options...
nicocolt Posté(e) le 29 mai 2007 Auteur Partager Posté(e) le 29 mai 2007 Superbe, merci, ça répond totalement à ma question. Amicalement, Nicolas Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.