[PHP] Session en objet ??

Session en objet ?? [PHP] - PHP - Programmation

Marsh Posté le 21-10-2005 à 11:58:16    

Hello tout le monde,
 
Je viens de recuperer un script que je dois "reparer". J'ai déjà avancé sur pas mal de point mais là je bloque un peu sur un element :
 
Le type qui a développé le systeme appellait les sessions comme cela :
 

Code :
  1. $_SESSION['nom_session']->IsLogged


 
J'ai installé le script sur un nouveau server et ça ne fonctionne plus :(
Ai*je oublié un element dans php.ini ?
 
 
Merci !

Reply

Marsh Posté le 21-10-2005 à 11:58:16   

Reply

Marsh Posté le 21-10-2005 à 12:07:37    

tu as la définition de la classe ?
comment est initialisé $_SESSION['nom_session'] ?


---------------
oui oui
Reply

Marsh Posté le 21-10-2005 à 12:12:36    

Ca me parait bien bizarre cet appel !
 
Il faudrait le message d erreur généré, et le reste du code du script pour voir les instanciasion de classe...

Reply

Marsh Posté le 21-10-2005 à 12:16:50    

je vous explique :  
index.html ==>  
- inclut un fichier qui fait un $_SESSION['session']=new objet;
- verifie si la personne est loggé via  
if($_SESSION["session"]->check_login($_POST["login"], $_POST["password"]))
 
si c'est bon ça inclut un main.html. Il le fait et paf ya l'appli
 
dès que je clique sur un bouton, c'est foutu, il me remet à l'ecran de login, il perd tout. Je me demande si c'est pas un soucis de configuration PHP

Reply

Marsh Posté le 21-10-2005 à 12:20:45    

est ce que le module "no-debug-non-zts-20020429" dit quelque chose à quelqu'un ?
 
Merci :)

Reply

Marsh Posté le 21-10-2005 à 12:22:20    

hmmm t as bien des session_start() au debut de tout tes script php ?

Reply

Marsh Posté le 21-10-2005 à 12:25:44    

oui oui, un print_r($_SESSION['nom_session']) m'affiche tout
un print_r($_SESSION['nom_session']) affiche : object

Reply

Marsh Posté le 21-10-2005 à 12:27:13    

> hmmm t as bien des session_start()
+1
 
et rencardes toi sur is_a() / is_object(), vérifies que ta session est valide
enfin du contrôle d'erreur, quoi !
et pendant que tu dev. fais le en E_ALL
 
if($check) include('main.html');
bah c'est bien secure ça, dis-moi ...
 
edit : un peu grilled ...


Message édité par shakpana le 21-10-2005 à 12:27:51
Reply

Marsh Posté le 21-10-2005 à 12:28:56    

20020429 ca me dit quelque chôse, c'est une date au format YYYYMMDD
 
Pour zts, je suis tombé sur "Zend Thread Safety", cherche de se côté, mais visiblement, c'est un module expérimental. Au vu de la date de la version que t'utilise, il doit en exister des versions plus récente mais ca pourait de provoquer des imcompatibilités alors faut te renseigner avant de choisr une version ou une autre.

Reply

Marsh Posté le 21-10-2005 à 12:29:22    

la déclaration des classes doit se faire avant le session_start()...

Reply

Marsh Posté le 21-10-2005 à 12:29:22   

Reply

Marsh Posté le 21-10-2005 à 12:30:18    

Ca sent l'usine a gaz comme application :d

Reply

Marsh Posté le 21-10-2005 à 12:31:23    

ma session est valide, mais on dirait que l'objet est mal reconstruit. un truc un peu bizarre
 
pour repeter : print_r($_SESSION) me renvoie is object
print_r($_SESSION['nom']) me renvoie toute les infos :)
 
par contre echo $_SESSION['nom']->IsLogged = 1
et il considere que ça c'est valide et rentre dans la condition :(
if(!$_SESSION['session']->IsLogged){
      session_unregister("session" );
      header("Location: " . HTTP_SERVER . HTTP_DOCROOT . "index.html" );  
      exit();
}

Reply

Marsh Posté le 21-10-2005 à 12:31:36    

Oreste a écrit :

Ca sent l'usine a gaz comme application :d


 
oui c'est n'importe quoi

Reply

Marsh Posté le 21-10-2005 à 12:35:26    

Quand je met en commentaire la verification du login :  
 
Fatal error: Only variables can be passed by reference in /home/site/public_html/demo/main.html on line 23

Reply

Marsh Posté le 21-10-2005 à 12:41:48    

> $_SESSION['nom']->IsLogged
> $_SESSION['session']->IsLogged
erreur de copiage / collage ?
 
> Fatal error: Only variables can be passed by reference in /home/site/public_html/demo/main.html on line 23
ah, ok je comprends mieux le check/include, donc ton .html contient du PHP ...
mais c'est bien louche comme vérif de login tout ça.
là du coup doit y avoir une variable manquante, dans l'genre ...

Reply

Marsh Posté le 21-10-2005 à 12:51:46    

shakpana a écrit :

> $_SESSION['nom']->IsLogged
> $_SESSION['session']->IsLogged
erreur de copiage / collage ?


 
non juste moi qui change à chaque fois le nom pour que ça soit clair, mais ça ne l'est pas :D
 

shakpana a écrit :


> Fatal error: Only variables can be passed by reference in /home/site/public_html/demo/main.html on line 23
ah, ok je comprends mieux le check/include, donc ton .html contient du PHP ...
mais c'est bien louche comme vérif de login tout ça.
là du coup doit y avoir une variable manquante, dans l'genre ...


 
en fait les fichiers sont nommés html mais on a fait les modifes pour que les .html soient considérés comme php. Mais en fait ça marchait tres bien sur l'ancien serveur :(

Reply

Marsh Posté le 21-10-2005 à 13:04:11    

Petite récap :
 
1. pas loggué, tu vois la page pour les users non-loggués
2. login initial fonctionne bien, tu te loggues, tu vois ce que tu dois voir
3. là tu clickes sur n'importe quel lien où tu devrais continuer le process une fois loggué et tu retournes à l'étape 1
 
c'est bien ça ?
 
donc la question que je me pose est, où sont stockés/ou-pas le user/pass
et ce que le pb ne serait pas là ...  
et si ils ne sont pas stockés, l'objet serait-il pas recréer avec les valeurs $_POST
bref poses des points de debug, passke là ...

Reply

Marsh Posté le 21-10-2005 à 13:10:02    

1. oui
2. oui
3. oui  
 
je vais essayer de foutre des $_POST[login ... à la main pour voir
 
là ça fait 1h que je compare les php.ini entre les deux serveurs

Reply

Marsh Posté le 21-10-2005 à 13:12:44    

bon ben les variables $_POST ne changent rien, je comprends pas, ya un probleme de fond là, je suis certain que ça doit être un module ou un probleme de conf

Reply

Marsh Posté le 21-10-2005 à 13:34:01    

bon voilà un truc simple qui prouve que c un probleme de config :  
sur le serveur où ça fonctionne, je fais un refresh apres m'être loggé, pas de soucis
sur le nouveau server j'ai : Fatal error: Unknown(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition <b>phty</b> of the object you are trying to operate on was loaded _before_ the session was started in /home/hubtoyou/public_html/demo/index.html on line 4

Reply

Marsh Posté le 21-10-2005 à 13:35:51    

je vais répéter encore ce que j'ai dit et qui a l'air confirmé par ce que tu viens d'ajouter :  
 
la déclaration des classes doit se faire avant le session_start()...
 
en gros le include() de ton fichier où tu déclares les classes, notamment celle passée en session doit avoir lieu avant le session_start()...


Message édité par titione le 21-10-2005 à 13:36:02
Reply

Marsh Posté le 21-10-2005 à 13:38:01    

voilà c'était ça
alors je resume si qq'un a le même type de soucis  
1/ comparer les deux phpinfo() pour être sur qu'il n'y a pas de difference
2/ ce qu'a dit titione
 
Merci à tous !

Reply

Marsh Posté le 21-10-2005 à 13:38:32    

copie le php.ini de l ancien serveur sur le nouveau juste pour tester

Reply

Marsh Posté le 21-10-2005 à 13:41:06    

Oreste a écrit :

copie le php.ini de l ancien serveur sur le nouveau juste pour tester


 
j'ai préféré faire param par param à la main

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed