Session en objet ?? [PHP] - PHP - Programmation
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...
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
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 
Marsh Posté le 21-10-2005 à 12:22:20
hmmm t as bien des session_start() au debut de tout tes script php ?
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
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 ...
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.
Marsh Posté le 21-10-2005 à 12:29:22
la déclaration des classes doit se faire avant le session_start()...
Marsh Posté le 21-10-2005 à 12:30:18
ReplyMarsh 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(); 
} 
Marsh Posté le 21-10-2005 à 12:31:36
ReplyMarsh 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
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 ...
Marsh Posté le 21-10-2005 à 12:51:46
| shakpana a écrit : > $_SESSION['nom']->IsLogged  | 
 
 
non juste moi qui change à chaque fois le nom pour que ça soit clair, mais ça ne l'est pas  
 
 
| shakpana a écrit :   | 
 
 
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  
 
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à ...
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
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
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
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()...
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 !
Marsh Posté le 21-10-2005 à 13:38:32
ReplyMarsh 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 
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 :
J'ai installé le script sur un nouveau server et ça ne fonctionne plus
Ai*je oublié un element dans php.ini ?
Merci !