Page 1 sur 1

Problème de variables de session

Posté : 05 avr. 2007, 15:59
par Miam
Bonjour
J'ai créé un site qui contient une fonction de login. Lors de ce login, si la personne entre le bon nom et mot de passe, une session_start(); commence avec une variable de session. Sur les autres pages, je récupère cette variable et si elle existe, c'est que l'utilisateur est logué et qu'il a le droit de voir la page qu'il a choisi.

Seulement j'ai un problème, avec IE (ca ne m'est pas arrivé avec Firefox) lorsque le login est effectué avec succès, dès que je change de page, il perd la variable de session :shock: :x

Jai fait quelques recherches qui m'ont fait remarquer que si je met le site dans "Mes sites de confiance" dans les paramètres de IE, je n'ai plus ce problème. Quelle technique devrais-je utiliser pour ne plus avoir ce problème, car sur les autres sites (comme ce forum par exemple) je n'ai pas besoin de le mettre dans les sites de confiance pour que ma session soit gardée... Il y'a donc une autre possibilité :roll:

Merci pour votre aide.

Posté : 05 avr. 2007, 16:23
par mere-teresa
Refuses-tu les cookies avec ton MSIE ?

Posté : 05 avr. 2007, 16:37
par Miam
Refuses-tu les cookies avec ton MSIE ?

Non, je ne les refuses ni avec Firefox, ni avec MSIE (Mais je précise que pour mon site, je n'utilise pas les cookies...)

Posté : 05 avr. 2007, 17:31
par Aureusms
Bien mais les sessions utilisent des cookies volatiles (non écris sur DD client) pour transmettre l'ID de session. Donc si pas de cookie, il faut transmettre l'ID par l'URL sinon pas de sessions...

Posté : 05 avr. 2007, 18:07
par zeus
Bien mais les sessions utilisent des cookies volatiles (non écris sur DD client)
meuh :shock: ...
Je ne connaissais pas cette notion :-k

Il me semble bien que les cookies de sessions (ceux qui contiennent l'identifiant de la session et permettent d'informer le serveur quelle session est la notre) sont écrit sur le DD comme tout fichier temporaire. La durée de vie de ce cookie est liée au navigateur qui gère l'effacement seul mais c'est pas seulement en cache ;)

Posté : 05 avr. 2007, 18:15
par Aureusms
Bah tu me pose un doute mais je crois avoir lu ca dans "PHP 5 avancé", je vérifie...

Posté : 05 avr. 2007, 18:26
par Invité
Je viens de faire l'essai sur mon site perso et si pas de cookie = pas de session.

J'ai trouvé page 229 "dans PHP 5 avancé":
Lorsque vous faites appel à session_start(), PHP essaie de lire le contenu d'un cookie nommé par défaut PHPSESSID.
et j'ai trouvé ctte ressource dans le net (http://dev.ppan.net/sessions_PHP.php)
Pour commencer par ce qui a été ma première question, lorsque je me suis intéressé aux sessions, il s'agit d'un cookie côté serveur, contenu dans un répertoire ad hoc (généralement tmp). La gestion de ce cookie particulier, contenant toutes les variables que le script lui aura transmis, est déterminée selon une alternative : l'ID de la session en cours (constante SID http://us2.php.net/manual/fr/ref.sessio ... .idpassing) est contenue dans un cookie côté client ou, quand ce dernier a désactivé les cookies, dans l'URL (si l'option est implémentée dans le php.ini). La doc de www.php.net explique ces options.
Qu'en pense tu ?

Posté : 05 avr. 2007, 18:28
par Aureusms
C'est moi le dernier message... (tiens au fait pourquoi on n'a l'option connecté à chaque passage ne marche pas avec moi :roll: )

Posté : 06 avr. 2007, 10:14
par mere-teresa
Puisque cela fonctionne avec IE, je suppose que tu as bien mis session_start() sur toutes les pages utilisant les sessions.

Par ailleurs, par défaut, les sessions utilisent des cookies, tu peux vérifier ce paramétrage en le regardant avec la fonction phpinfo() et le modifier en éditant le fichier php.ini. Mais si sur ton serveur tu ne peux pas toucher à php.ini, il va falloir passer le SID dans l'URL.

Posté : 06 avr. 2007, 11:19
par Aureusms
Dites sainte mère... Cela voudrais dire que je n'ai pas dis de bêtises ? (cela serai étonnant... :lol: )

Posté : 08 avr. 2007, 13:34
par Miam
Puisque cela fonctionne avec IE, je suppose que tu as bien mis session_start() sur toutes les pages utilisant les sessions.

Par ailleurs, par défaut, les sessions utilisent des cookies, tu peux vérifier ce paramétrage en le regardant avec la fonction phpinfo() et le modifier en éditant le fichier php.ini. Mais si sur ton serveur tu ne peux pas toucher à php.ini, il va falloir passer le SID dans l'URL.
Oui, j'ai bel et bien mis le session_start sur toute les pages... Donc je pense que je vais passer le SID dans l'URL,car j'ai eu beaucoup de remarque comme quoi la session ne durait pas, puisque la plupart des gens utilisent IE... :?
En tout cas merci pour vos recherches. A bientôt

Posté : 08 avr. 2007, 17:02
par mere-teresa
Si tu copies colles ici ce que donne ton phpinfo() à la rubrique session, on pourra t'aider plus amplement.