Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
734 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [php] session : pb utilisation avec des "objets"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php] session : pb utilisation avec des "objets"

n°347198
slvn
Posté le 29-03-2003 à 15:03:22  profilanswer
 

j'aimerais mettre des objets en session :
 
malheureusement ca marche avec des type "simple", mais pas avec des object :
 

Code :
  1. <?php
  2. session_start();
  3. if (!isset($_SESSION['count'])) {
  4.     $_SESSION['count'] = 0;
  5.     echo "hello";
  6. }
  7. $count = &$_SESSION['count'];
  8. $count++;
  9. echo $count;
  10. ?>


 

Code :
  1. <?php
  2. session_start();
  3. if (!isset($_SESSION['count'])) {
  4.     $_SESSION['count'] = new Compteur();
  5.     echo "hello";
  6. }
  7. $count = &$_SESSION['count'];
  8. $count->inc();
  9. $count->see();
  10. ?>


 
 
 
j'ai l'impression que quadn on mets un object en session :  
isset => renvoie false tout le temps :(

mood
Publicité
Posté le 29-03-2003 à 15:03:22  profilanswer
 

n°347200
art_dupond
je suis neuneu... oui oui !!
Posté le 29-03-2003 à 15:08:11  profilanswer
 

peut etre avec serialize() et unserialize()

n°347205
slvn
Posté le 29-03-2003 à 15:13:26  profilanswer
 

non, je crois pas... ca s'étant avant register_global off et track_vars on

n°347212
beleg
黑社會
Posté le 29-03-2003 à 15:18:25  profilanswer
 

Code :
  1. <?php
  2.   session_start();
  3.   if (!isset($_SESSION['count'])) {
  4.         $_SESSION['count'] = 0;
  5.         echo "hello";
  6.   } 
  7.  
  8.   $_SESSION['count']++;
  9.   echo $_SESSION['count'];
  10.   ?>
  11.   <?php
  12.   session_start();
  13.   if (!isset($_SESSION['count'])) {
  14.         $_SESSION['count'] = new Compteur();
  15.         echo "hello";
  16.   } 
  17.  
  18. $_SESSION['count']->inc();
  19. $_SESSION['count']->see();
  20.   ?>


 
non ?

n°347214
slvn
Posté le 29-03-2003 à 15:18:46  profilanswer
 

pb résolu :
dans le cas d'un type simple : isSet
dnas le cas d'un objet :   is_object  
!

n°347217
slvn
Posté le 29-03-2003 à 15:19:56  profilanswer
 

beleg > ce qeu tu marque c'est kif kif:
& == obtenir une référence sur l'objet de la session !

n°347222
beleg
黑社會
Posté le 29-03-2003 à 15:26:29  profilanswer
 

je sais, c bien pour ca que je vois pas linteret de créer une variable $count pour agir sur $_SESSION["count"]

n°347227
slvn
Posté le 29-03-2003 à 15:32:26  profilanswer
 

non, c simpelment plus facil de manipuler $count que $_SESSION['count']
 
 
.....
en fait, je me suis planté : ca résoud pas mon problème !!
 
en fait, le session_start() ne réccupère pas les objets que je met dans le table $_SESSION[] !! je capte pas !

n°347243
beleg
黑社會
Posté le 29-03-2003 à 16:17:35  profilanswer
 

je viens de regarder un fichier session ...  
c de la forme : NOM | TYPE : LONGUEUR : VALEUR;  
 
je suppose quil ne doit pas savoir comment sauvegarder ton objet, il faudrait le convertir dans un type symple genre array
 
edit : si il le sauve ... donc il doit pouvoir le recuperer .. test en cours.
 
 
jai sauvé ds $_SESSION["membre"] une instance de member
je recupere :  
__PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => member [login] => yo [idmember] => 5 [idunique] => e69cbb8a06a7558e076c6c0162190d0e [idonline] => 446 [admin] => 2 )


Message édité par beleg le 29-03-2003 à 16:22:06
n°347245
slvn
Posté le 29-03-2003 à 16:26:43  profilanswer
 

en, fait, le pb ne doit pas venir de la:
 
l'exemple marche bien tel qu'il est.
mais ca se comporte tres bizarrement quand  
on essaye de garder en session une instance Class A et que cette class A contient un champs qui est une instannce d'une classe B.
des lors, la session ne garde pu l'instance de A

mood
Publicité
Posté le 29-03-2003 à 16:26:43  profilanswer
 

n°347248
ethernal
Chercheur de vérité...
Posté le 29-03-2003 à 16:31:47  profilanswer
 

Code :
  1. if (!is_object($_SESSION['userobj'])){
  2.   $_SESSION['userobj']= new user();
  3.   //ps : dans le constructeur $this->countPost=0;
  4. }
  5. $user= $_SESSION['userobj'];
  6. echo $user->getPost(); //return $this->countPost;
  7. $user->IncPost(); //=$this->countPost++;
  8. //comme l'objet a été modifié, il faut le ressauver
  9. $_SESSION['userobj']= $user;


 
chez moi ça fct toujours...


---------------
...oups kernel error...
n°347249
beleg
黑社會
Posté le 29-03-2003 à 16:33:05  profilanswer
 

moi jai fait comme ca pr recuperer mon objet du coup
 
// sauvegarde
//$_SESSION["membre"] = serialize($M);  
 
// recuperation
$MM = unserialize($_SESSION["membre"]);
print_r($MM);
 
echo "<br><br>".$MM->login;  
echo "<br><br>".$MM->idunique;
 
jai pas de classe sous la main comportant des objets, je peux pas aller plus loin ds le test

n°347255
slvn
Posté le 29-03-2003 à 16:37:04  profilanswer
 

le pb est c'est qu'il n'a pas l'air de vouloir mettre en session un objec,t quand celui ci contient deja un objet!
 
 
 
j'essaye de te faire un exemple php

n°347258
ethernal
Chercheur de vérité...
Posté le 29-03-2003 à 16:40:48  profilanswer
 

tu veux direq'un user qui a un objet caddy par ex, tu sais récupérer l'user, mais pas le caddy ?
$user= new user();
$user->caddy->addArticle('test',3);
ça c'est pas possible de le sauver dans une session ?
$_SESSION['user']= $user;  
$user2= $_SESSION['user'];
$user2->caddy->afficher(); //ne fonctionnerait pas ?


---------------
...oups kernel error...
n°347259
beleg
黑社會
Posté le 29-03-2003 à 16:41:03  profilanswer
 

ethernal a écrit :

Code :
  1. if (!is_object($_SESSION['userobj'])){
  2.   $_SESSION['userobj']= new user();
  3.   //ps : dans le constructeur $this->countPost=0;
  4. }
  5. $user= $_SESSION['userobj'];
  6. echo $user->getPost(); //return $this->countPost;
  7. $user->IncPost(); //=$this->countPost++;
  8. //comme l'objet a été modifié, il faut le ressauver
  9. $_SESSION['userobj']= $user;


 
chez moi ça fct toujours...


 
 :hello: , bah pas chez moi, mais ca va pas mempecher de sortir  :) , on recherche un nouveau dev php :whistle:  mais tjrs pas de php de tres haut niveau technique ... 2 ans de dev de personnes dorigine diverses, c chaud a ratrapper  :D , c un bordel  
 
 [:psywalk]

n°347263
ethernal
Chercheur de vérité...
Posté le 29-03-2003 à 16:45:09  profilanswer
 

beleg a écrit :


 
 :hello: , bah pas chez moi, mais ca va pas mempecher de sortir  :) , on recherche un nouveau dev php :whistle:  mais tjrs pas de php de tres haut niveau technique ... 2 ans de dev de personnes dorigine diverses, c chaud a ratrapper  :D , c un bordel  


 [:pom2ping] heu... ils engagerait qq en homework à 400km de leur boite ?? :D
:lol: fo imposer tes points de vues ;)


---------------
...oups kernel error...
n°347268
slvn
Posté le 29-03-2003 à 16:50:41  profilanswer
 

arggggggh,  
je viens de trouver le bug,  
ca vient de la methode __sleep !!
 
 
je sais pas pkoi, mais ca chie cette méthode!!!!
 
 
 

Code :
  1. <?php
  2. Class B{
  3. var $b;
  4. function __sleep( ) { return 0; }
  5. }
  6. Class A{
  7. var $mon_b;
  8. function A() { $this->mon_b = new B(); }
  9. }
  10. session_start();
  11. echo "en session now : <br>";
  12. foreach( $_SESSION as $x => $y) echo "$x => $y <br>";
  13. echo "=====================<br>";
  14. // Utilisez $HTTP_SESSION_VARS avec PHP 4.0.6 ou plus ancien
  15. if (!isset($_SESSION['mon_a'])) {
  16.     $_SESSION['mon_a'] = new A();
  17.     echo "je rajoute une instance de A en session !!!!<br>";
  18. }
  19. echo "en session now : <br>";
  20. foreach( $_SESSION as $x => $y) echo "$x => $y <br>";
  21. echo "=====================<br>";
  22. ?>

n°347271
beleg
黑社會
Posté le 29-03-2003 à 16:55:22  profilanswer
 

notre developpeuse/chef est au canada  :D , c super pratique pr les explications ... mais je doute quil te prenne pr rester chez toi  :lol: .
 
tjrs en periode dessai, je fais des commentaires mais pas a tout le monde , profil bas.


Message édité par beleg le 29-03-2003 à 16:56:05
n°347297
ethernal
Chercheur de vérité...
Posté le 29-03-2003 à 17:56:16  profilanswer
 

beleg a écrit :

je doute quil te prenne pr rester chez toi  :lol: .


dommage  :sweat:


---------------
...oups kernel error...
n°347298
ethernal
Chercheur de vérité...
Posté le 29-03-2003 à 17:57:54  profilanswer
 

__sleep pour les objets, c'est pas une fonciton réservée ??
 
j'ai vu ça qq part, mais où ?? :(
 
-- edit--
http://www.php.net/manual/en/function.serialize.php
ok j'ai rien dit  [:tuffgong]  


Message édité par ethernal le 29-03-2003 à 19:27:26

---------------
...oups kernel error...
n°347300
slvn
Posté le 29-03-2003 à 18:02:14  profilanswer
 

bah si c'est une fonction reservé, elle est appellée avant la serialisation !
 
mais si elle existe, le but est de l'utilisr, enfin, bon, c pas grave, j'ai pas besoin de cette fonction en ce moment

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [php] session : pb utilisation avec des "objets"

 

Sujets relatifs
[emacs] utilisation des chaine[php/javascript] utilisation de variable php dans un javascript
Insertion et utilisation de données[PHP] utiliser beaucoup d'objets en php ?
Trop de variables de session = problème ?utilisation d'un flash !
[Session] Passage de l'id de session de pages en pagesUtilisation des caches L1 et L2 sur pentium!!??
utilisation d'un module perso avec active perl[PHP] Session
Plus de sujets relatifs à : [php] session : pb utilisation avec des "objets"


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR