Variable de session invisible - PHP - Programmation
Marsh Posté le 03-11-2003 à 16:14:06
J'ai fait un copier/coller de ton code et ça marche chez moi (Apache 1.3.28 - PHP 4.3.3 - register_globals off)...
Marsh Posté le 03-11-2003 à 16:16:14
Une idée qui me traverse la tete => tu as regarde le log d'Apache? A tous les coups tu as une erreur liée aux sessions. Sous windows tu dois changer la valeur de session.save_path sinon Apache peut pas creer les fichiers de session...
Marsh Posté le 03-11-2003 à 16:31:53
Le log d'Apache ne me donne pas d'erreur relative a ce probleme. Juste un favicon.ico absent sur une page que j'avais testee. En ce qui concerne le session.save_path il pointe bien vers un repertoire SessionData que j'ai créé. J'avoue que je suis perplexe devant ce probleme
Stolenkiss
Marsh Posté le 03-11-2003 à 16:47:35
T'as regarde dans ton repertoire SessionData pour verifier si le fichier de session est créé et si il n'est pas vide?
EDIT : tu es sous win ou linux au fait (peut etre un pb de permission sous linux...)?
Marsh Posté le 03-11-2003 à 17:45:41
Je suis sous windows
J'ai encore regarde et j'ai un peu avance: jepense avoir trouve d'ou vient le probleme. Lorsque j'arrive sur la premiere page (celle qui enregistre mes donnees de session), un fichier de session est bien créé dans mon repertoire session data. Tout est donc normal. En l'ouvrant je retrouve bien les info que je voulais enregistrer.
En clickantsur le lien j'arrive sur la deuxieme page, et un nouveau fichier de session est créé! Saperlipopette: les erreurs sont toujours apparentes... en fait c'est comme si la session qui avait été ouverte précédemment était ignorée, et leserveur cherche alors les info que je lui demande dans le nouveau fichier de session... qui bien evidemment ne contient rien...
Si je modifie le lien d'une page à une autre de manière à rajouter l'id de session afin d'obtenir ceci:
<a href="./admin.php?<?=SID?>">Lien vers la page pour afficher les variables de session</a>
Le serveur se comporte comme si session.use_trans_sid est activé: la session est retrouvée et tout marche (mes données s'affichent). Hors chez moi, session.use_trans_sid est bel et bien desactivé!!!
Le problème semble bien venir de la configuration... mais je ne vois pas trop comment le régler.
Stolenkiss
Marsh Posté le 03-11-2003 à 17:50:23
euh question idiote...
Vous bossez bien avec session.use_trans_sid = 0 ? (C'estsurtout ta réponse qui m'interesse Impulse Merci d'avance).
Stolenkiss
Marsh Posté le 03-11-2003 à 17:58:54
Stolenkiss a écrit : Le log d'Apache ne me donne pas d'erreur relative a ce probleme. Juste un favicon.ico absent sur une page que j'avais testee. |
regarde les logs d'erreurs, pas logs d'acces
Marsh Posté le 03-11-2003 à 18:04:57
C'est bien dans le log d'erreur
Je n'ai pas ouvert le log d'acces.
Stolenkiss
Marsh Posté le 03-11-2003 à 18:15:29
Eh ben à mon humble avis, c'est simplement un problème d'acceptation des cookies par le navigateur que tu utilises !
Ca mérite en tous les cas d'être vérifié...
Marsh Posté le 03-11-2003 à 19:41:51
Mon navigateur accepte justement tous les cookies...
Le niveau de séurité est au mini. J'ai l'impression que ca vient de la config PHP. L'ID de session n'est pas transmis d'une page à une autre. Résultat, le serveur attribue un nouveau SID a chaquefoisque je fais session_start dans mon script PHP.
Stolenkiss
Marsh Posté le 04-11-2003 à 08:11:31
Citation : euh question idiote... |
Oui, session.use_trans_sid = 0 chez moi.
Sinon, t'as essayé le script avec quels browsers (je suis a court d'idées...)?
Marsh Posté le 04-11-2003 à 08:15:22
Voici mon php.ini (seulement la section [Session]), peut etre que ça pourra t'aider...
Code :
|
Note : j'utilise ce serveur sur une machine de dev, la configuration n'est surement pas optimale et/ou sécurisée mais en tt cas ton script fonctionne dessus sans aucune modification...
Marsh Posté le 04-11-2003 à 08:17:02
Autant pour moi et les cookies, ça m'avait fait une chose similaire à ton problème sur un navigateur que je testais. (d'ailleurs tu as essayé avec plusieurs browsers ?)
Sinon dans un php.ini avec lequel j'ai des sessions fonctionnelles, on a
session.save_handler=files
session.use_cookies=on
session.save_path=le path qui va bien
session.use_only_cookies=Off
session.use_trans_sid=Off
session.auto_start=off
Si ceux là sont ok on pourra voir la suite (mais je vois pas pourquoi ils seraient faux, ça me semble être la config de base).
Marsh Posté le 04-11-2003 à 08:57:06
Yop,
J'ai bien ces valeurs la J'ai juste modifié le trans SID pour le faire apparaitre dans l'url, et dans ce cas ca marche correctement. JE l'ai remis à Off. Pour les navigateurs, j'ai Mozilla 1.4 et IE 6... mais pas de difference entre les deux
Stolenkiss
Marsh Posté le 04-11-2003 à 09:33:26
Bon,
J'ai tout effacé, tout réinstallé. Et ca semble fonctionner maintenant (en tout cas pour l'exemple basique d'utilisation des sessions que j'ai posté, pas de problème).
Mais j'ai voulu tester un truc un peu plus 'costaud', et j'ai eu la bonne idée de télécharger Nuked-Klan pour voir si j'arrivais à obtenir qqchse de correct. Le résultat (je ne vous mets que les premieres lignes):
Notice: Undefined index: user_id in d:\www\klan\upload\nuked.php on line 21 |
O.o ??? alors est ce que le problème vient toujours de chez moi, ou est ce que c'est Nuked Klan (en ver. 1.4) qui joue avec mes nerfs? J'avais déjà essayé de regarder comment les sites comme Nuked Klan fonctionner, car les interfaces skinnables m'interessaient, mais je n'ai jamais réussi à faire fonctionner quoi que ce soit, en restant bloqué sur ce genre de problème.
Pour le moment je viens d'installer easyPHP 1.7 sur ma machine (téléchargé pour voir si y'avait qqchse de mieux niveau config), mais je vais réinstaller Apache + PHP + MySQL comme je le faisais avant. Vos conseils sont les bienvenus
Stolenkiss
Marsh Posté le 04-11-2003 à 09:33:50
T'as lu tous les commentaires sur php.net?
=> http://fr3.php.net/session_start
Il y a souvent des problemes soulevés par les utilisateurs et les solutions correspondantes.
Marsh Posté le 04-11-2003 à 09:37:33
Tu as raison de vouloir installer Apache + PHP + MySQL a la main. Pour les conseils, tu tombes bien : il y a un topic recent sur le sujet.
Pour ton pb avec Nuked Klan ça ressemble a un pb de config de Nuked Klan, genre un include d'un fichier de conf qui foire ou plutot des lignes qui doivent etre décommentées apres avoir mis les bonnes valeurs de conf (pour db_host, db_user et db_pass par exemple). Apres forcement t'as des variables et des constantes qui ne sont pas definies. Lis bien le readme.
Marsh Posté le 04-11-2003 à 12:10:34
Bon,
J'ai bien réinstallé Apache et PHP en suivant le fameux tutorial. Je l'ai donc mis en module plutot qu'en CGI, mais le tutorial ne m'a pas semblé m'apporter quoi que ce soit (même si je reconnais sincèrement qu'il est plus clair que la doc, et sera donc plus facile a lire pour qqun qui installe tout ca pour la premiere fois).
La seule difference avec mon install, c'est au niveau de l'affichage des erreurs:
Le but de la manoeuvre est d'ajuster le niveau de rapport d'erreurs afin qu'il ne renvoie pas les notifications. Vous n'y êtes pas obligés mais il se trouve qu'elles ont une fâcheuse tendance à apparaître fréquemment, même quand votre page vous paraît écrite correctement. |
Il est preconise de supprimer les warnings pour la lisibilite de la page. Alors ok, maintenant ca marche... mais c'est vraiment la solution? Parce que c'est comme mettre un coup de peinture sur une carrosserie rouillee non? Bon ok, il ne s'agit pas d'erreurs graves, mais je reste un peu perplexe devant les innombrables 'Notice' qui sont affichés...
Stolenkiss
Marsh Posté le 04-11-2003 à 12:14:22
Lis le readme de Nuked Klan, configure le correctement et tu n'auras plus d'erreur (error, warning ou notice).
Marsh Posté le 04-11-2003 à 13:06:25
Bah vi c'est ce que j'ai fait,
Mais quand je regarde les sources, meme pour install.php, il fait reference a des variables qui ne peuvent pas encore etre renseignees. Et comme il n'y a pas de isset()... (je pense à la variable 'action', qui doit être initialisée à "install" et qui est vide chez moi lors de l'ouverture de install.php. La valeur est normalement passée par la méthode get).
Mes sources sont lues correctement par contre, donc tout semble être rentré dans l'ordre. Pour Php nuke, je pense pouvoir m'y mettre tout seul maintenant. Merci bcp de votre aide en tout cas
Stolenkiss
Marsh Posté le 03-11-2003 à 15:09:06
Je viens de tenter d'installer un clone de Php Nuke,
Mais de gros problèmes interviennent lorsque jelance les fichiers PHP. Résolu à comprendre le problème, je crée les 2 scripts suivants:
wam.php
<?php
session_start();
$_SESSION['name'] = "Wam";
?>
<html><body>
<a href="./admin.php">Lien vers la page pour afficher les variables de session</a>
</body></html>
admin.php
<?php
session_start();
if (isset($_SESSION['name'])) {
echo($_SESSION['name']);
}
else {
echo("Alors ca c'est ballot..." );
}
echo($_SESSION['name']);
$_SESSION['test'] = "Babylone";
echo($_SESSION['test']);
?>
Lorsque je lance wam.php, et que je click sur le lien vers admin.php qui sert donc à afficher la variable de session 'name', j'obtiens cela:
Alors ca c'est ballot...
Notice: Undefined index: name in d:\www\test\admin.php on line 9
Babylone
J'utilise Apache 1.3.29, PHP 4.3.3 et register_globals off. Je sais que les problemes de session sont monnaie courante chez les gens qui debutent, et j'ai déjà regardé maintes et maintes fois mon code, et comparé avec des recherches sur google. Mais j'avoue que je ne vois pas d'erreur flagrante. Un regard exterieur sera le bienvenu . Le problème viendrait il d'une erreur de configuration de mon serveur local? Merci d'avance à tous.
Message édité par stolenkiss le 03-11-2003 à 15:10:22