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 !