[Résolu] session_id perdu sous IE

Petit nouveau ! | 3 Messages

23 mars 2011, 13:18

Bonjour,

je n'arrive pas à garder le session_id sous Internet explorer, testé en version 6 et 8, avec pourtant les cookies d'activés.
sous firefox/chrome/opera je n'ai pas de soucis.

en fait, même pas besoin de fermer la page ou d'en changer pour voir le problème, un simple F5 suffit à faire regénérer un nouveau session_id ;(

Code : Tout sélectionner

<?php session_start(); ?> <?php $_SESSION['foo'] = 'bar'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr-FR"> <head profile="http://gmpg.org/xfn/11"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <?php echo session_id(); ?> </body> </html>
je suis en train de m'arracher tout les cheveux à essayer de comprendre d'où ça vient.
une bonne âme saurait 'aider à comprendre mon erreur ?
Modifié en dernier par mobidyc le 25 mars 2011, 17:08, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 mars 2011, 19:10

Salut,

A tu vérifié la présence du cookie de session ?

A tu essayer de passer le sid dans l'url ?

@+
Il en faut peu pour être heureux ......

devlop78
Invité n'ayant pas de compte PHPfrance

23 mars 2011, 19:42

Si t'arrives à passer le sid par l'URL, alors engueule ton hébergeur ... C'est un super moyen d'attaque de session par fixation.

Bref. Essaie de voir si le serveur envoie bien la session à ton navigateur, et si ton navigateur retourne bien la session au serveur lors de la connexion d'après. Tu peux utiliser httpHeaders pour FireFox, en lisant les entêtes. Cela te permettra dans un premier temps, de bien isoler le problème :

-> pas d'envoi de session par le serveur (problème serveur, tu peux palier ce problème en faisant un setcookie(session_name(), session_id());
-> pas de retour session par le navigateur (A priori, problème navigateur, mais pourquoi pas problème d'échange en général).
-> envoi et retour mais pas pris en charge par le serveur (problème serveur, à voir).

Enfin, c'est une idée, dans mon entreprise, la session n'est jamais envoyée au navigateur ... on a regardé dans le php.ini rien n'a accroché mon attention, j'ai donc fait un setcookie() moi-même et ça marche ...

ViPHP
xTG
ViPHP | 7331 Messages

24 mars 2011, 09:01

Si t'arrives à passer le sid par l'URL, alors engueule ton hébergeur ... C'est un super moyen d'attaque de session par fixation.
Plus de 80% des hébergeurs le permettent.

Petit nouveau ! | 3 Messages

24 mars 2011, 10:55

tout d'abord merci pour vos réponses.
mais je commence a désespérer de ne pas comprendre ;(
Essaie de voir si le serveur envoie bien la session à ton navigateur, et si ton navigateur retourne bien la session au serveur lors de la connexion d'après. Tu peux utiliser httpHeaders pour FireFox, en lisant les entêtes.
euh justement j'ai pas de problème avec firefox.
ni avec chrome, ni opéra d'ailleurs, y a vraiment que IE qui me bouffe la tête.

le problème , c'est que j'essaie de créer un portail pour mon entreprise dont le standard d'utilisation est...IE.

testé sur 2 pcs différents, avec IE6, IE8 et même un IE6 citrixisé, toujours la même chose, l'identifiant de session est régénéré à chaque rafraichissement ou changement de page.

j'ai installé IE WebDeveloper pour analyser un peu tout ça et je vois bien dans l'analyseur que chaque requete ajax récupère un sessid différent.
ça me pose un gros problème pour les requetes ajax.

je vais être obligé d'activer le transid et de passer le session id par l'url je crois, pas glop tout ça ;(

Petit nouveau ! | 3 Messages

25 mars 2011, 17:08

trouvé !!!
et je dois avouer que je suis un peu dégouté par la résolution...

Internet explorer n'enregistre pas les cookies si le nom de domaine contient un underscore....
une fois le nom de domaine changé et le "_" supprimé, ça fonctionne.

vraiment une saloperie cet internet explorer de !#@&#

merci à tous pour vos réponses.