$_SESSION qui disparaissent sous IE [PHP] - PHP - Programmation
Marsh Posté le 09-07-2012 à 17:29:02
Ca ne viendrait pas du mode de navigation "privée" par hasard?
Marsh Posté le 09-07-2012 à 18:28:41
non, j'en ai pas l'impression...
Et ce que ça viendrait pas de mon serveur ?
J'ai installé XAMPP dans sa dernière version sur un Windows 2008R2. Y a pas une option quelque part ?
Marsh Posté le 09-07-2012 à 21:26:53
Commence par bien identifier ton problème.
Es-tu sûr que tout passe pour le mieux avec Firefox ? As-tu testé avec d'autres navigateurs ? Est-ce que le « bogue » est reproductible ou est-il totalement aléatoire ?
Quelle est ta version d'IE ?
Tu te connectes sur un site distant ou tu es en local ?
Pour vérifier, je te conseil de créer des pages extrêmement simples :
— Dans un fichier init.php :
Code :
|
— Dans un fichier test.php :
Code :
|
Va sur init.php, puis recharge ta page test.php plein de fois. Ré-itère l'opération sur IE, FF et un autre navigateur. Déjà, tu identifieras s'il s'agit d'un « bogue » Apache où d'une erreur de code.
Marsh Posté le 10-07-2012 à 00:23:15
Salut.
Merci pour tes conseils.
J'ai testé avec FF et Chrome, c'est bon. Aucun souci.
Le bug est aléatoire, mais il intervient entre 5 et 10 clics de navigation. Une fois que j'ai perdu la session, je peux rien faire. F5 ne m'aide pas, je suis obligé de quitter le site et de me logger à nouveau.
Je testerai ton bout de code demain.
Merci, a+ !
Marsh Posté le 10-07-2012 à 08:38:16
Question bête : tes sessions, tu les gères avec le système natif de php? T'en aurais pas implémenté un dans une BD ou un système de fichier?
Marsh Posté le 10-07-2012 à 12:06:34
rufo a écrit : T'en aurais pas implémenté un dans une BD ou un système de fichier? |
Euh... Je crois pas, vu que je sais pas de quoi tu parles ^^
En gros, à la connexion, php va chercher les infos de l'utilisateurs dans une base de données, et les variables de session récupèrent ces données.
J'ai, en gros les variables
$_SESSION['id']
$_SESSION['niveau']
$_SESSION['login']
$_SESSION['entreprise']
Il m'arrive parfois de créer des variables $entreprise je ne sais pas si ça joue.
a+
Marsh Posté le 10-07-2012 à 12:25:50
Archaygo a écrit :
|
Bon, ben visiblement, je perds pas la session en faisant ça.
Y'aurait un problème dans mon code oO
Marsh Posté le 10-07-2012 à 14:48:53
Probable.
C'est le moment où tu dois éditer le fichier test.php, en te rapprochant de plus en plus de ton/tes fichier(s) PHP qui te font perdre la session. N'oublie pas de tester souvent, pour réussir à isoler la partie de code qui est à l'origine de ton problème.
Ceci peut être assez long, mais c'est aussi infaillible
Sinon, tu peux poster ton code ici, mais je ne suis pas certain de pouvoir identifier d'un seul coup d'oeil un problème comme le tiens.
EDIT : Ah j'oubliais, essaie le test précédent avec des tempos différents : ne te contente pas de recharger la page toutes les 5 secondes pendant un minutes, fais-le après 15s, 30s, 1min, 2min pour t'assurer que ton PHP n'a pas de problème. Vérifie aussi la valeur de session.gc_maxlifetime dans ton php.ini, il correspond à peu près au temps de vie des sessions, en seconde. Par défaut, c'est 1440 je crois.
Marsh Posté le 10-07-2012 à 16:25:32
Ah, intéressant à savoir.
Bon, en général, ça coupe au bout de quelques secondes. 5 minutes au max.
Ca peut intervenir sur n'importe quelle page, donc, je sais absolument pas quoi chercher dans mon code.
Aie aie aie. Ca sent la galère.
Marsh Posté le 10-07-2012 à 17:12:46
Ça dépend de l'utilisation, les cookies étant côté client sont moins sécurisés que la variable $_SESSION.
Tu peux utiliser un cookie pour garder en mémoire un panier sur un site de vente, mais pas par exemple pour gérer le compte d'un utilisateur.
Marsh Posté le 10-07-2012 à 17:37:16
La plupart des sites web (dont Google & co) utilisent, entre autres, les cookies pour la gestion des authentifications utilisateur (option "se souvenir de moi" ).
Tu peux coupler ça avec une vérification d'adresse IP et limiter la durée de vie du cookie pour coller à celle d'une session, pour plus de sécurité. Mais je parle bien de solution de rechange, mieux vaut utiliser une session comme l'indique Flow789.
Marsh Posté le 10-07-2012 à 17:41:57
Ouais, au pire.
Sinon, je marque en page d'accueil qu'il faut pas utiliser IE ^^
Bon, je vais continuer à chercher.
Au pire, je ferai avec les cookies, mais je dois revoir tout mon code :-/ avec mes 50 pages...
Si vous avez une autre solution, je prends.
Merci en tout cas
Marsh Posté le 10-07-2012 à 18:18:43
Je dois t'avouer que ça ne m'est jamais arrivé. Ca doit forcément venir d'un problème dans ton code, ce qui m'embête c'est ce côté aléatoire qui ne permet pas de deviner facilement d'où ça vient.
Je verrais bien une merde comme une variable de session réinitialisée à un moment du code, mais ce serait étonnant que seul IE y soit sensible.
Je ne vois pas top d'autre solution que de reprendre intégralement le code comme te l'a expliqué Archaygo.
Marsh Posté le 10-07-2012 à 23:08:15
register_globals est à off dans ton php.ini?
Marsh Posté le 11-07-2012 à 12:40:24
Bon, il est bien à off.
J'ai aussi vu :
session.auto_start = 0
session.cookie_lifetime = 0
session.gc_maxlifetime = 1440
session.cache_expire = 180
je ne sais pas à quoi correspond session.gc_probability = 1
Voilà en gros tout ce que j'ai trouvé qui pourrait concerner mes sessions. Les valeurs sont toutes celles par défaut dans mon php.ini.
Marsh Posté le 11-07-2012 à 15:59:13
Cela ne viendrait il pas de tes paramètres de cookies ?
Marsh Posté le 11-07-2012 à 19:36:58
Lesquels par exemple ?
Au passage : Le problème ne survient pas que avec mon PC. Je l'ai fait avec 3 PC différents qui n'ont rien à voir entre eux.
a+
Marsh Posté le 12-07-2012 à 10:59:01
Déjà vérifie que les cookies sont acceptés par défaut. Abaisse éventuelement le niveau de confidentialité. Si un cookie est bloqué, tu dois avoir dans la barre d'état un oeil avec un cercle rouge barré.
Marsh Posté le 16-07-2012 à 19:23:16
dites, il y a des pages où, en fonction de ce qui a été choisi dans le formulaires, je fais :
Citation :
|
ce header pourrait perturber le session_start() ? ou le exit peut être ?
Et ça fait quoi si je mets 2 session_start(); sur la même page ?
a+
edit : non, c'est pas ça, je viens de tester. J'arrive pas à reproduire le bug à volonté. C'est complètement aléatoire !
Marsh Posté le 17-07-2012 à 11:21:25
2 session_start() pas de pb
Si une session est déjà ouverte la 2e est ignorée
Marsh Posté le 17-07-2012 à 11:22:16
J'ai eu le même pb aléatoire c'était à cause d'ajax
Je touchais aux sessions sans attendre le callback
Marsh Posté le 17-07-2012 à 19:05:56
Bon, petit diagnostic :
En fait, j'ai fait des calculs qui s'appuient sur des valeurs saisies.
Il y a 3 types de calculs, tous accessibles depuis n'importe quelle page.
Quand on arrive sur la page d'accueil d'un calcul, tous les cookies sont supprimées. Par exemple, avec setcookie('moncookie');
L'utilisateur passe de page en pages et de formulaires en formulaires. Les valeurs ainsi saisies sont stockées dans des cookies. A la fin, les cookies sont traités.
Lorsque j'arrive à la fin du type de calcul "rentabilité" (./calcul.php?page=rentabilite&action=resultat) si je vais sur la page d'accueil d'un autre calcul (./calcul.php?page=hprod), à ce moment-là, je perd ma session. J'ai fait le test 2 fois et ça ne rate pas.
Une idée ?
edit : fail. en fait c'est pas systématique T_T Je viens de tester à nouveau et ça plante pas au même moment.
edit 2 : mais en fait, il semblerait qu'il y ait un lien avec les pages où je supprime mes cookies...
Marsh Posté le 20-07-2012 à 12:27:51
ReplyMarsh Posté le 21-07-2012 à 17:27:35
Toujours mes variables de sessions qui disparaissent sous IE. Ca vient aussi de me le faire sur FF pour la première fois.
j'ai essayé de remplacer
Code :
|
par
Code :
|
c'est pas mieux.
J'arrive pas à savoir d'où ça vient !
Est-ce que ça vient de l'initialisation des cookies ?
Peu probable.
Est-ce que ça vient d'un manque de session_start(); ?
Possible, mais il est écrit en première ligne de la page dans laquelle toutes les autres sont incluses.
Code :
|
Est-ce que ça viendrait pas de ma structure à base de switch case ? et/ou des calculs pour les valeurs des cookies ?
Code :
|
Je patauge, je patauge.
Ca vient même de me le faire pour la première fois avec firefox.
Y'a pas une commande pour dire "supprimer tous les cookies" ? Au moins, ça me permettrai d'écarter la théorie du cookie...
Sinon je fais un cookie pour remplacer les variables de session. Mais ça fait chier...
Marsh Posté le 22-07-2012 à 11:25:07
Question qui n'a peut-etre aucun rapport, mais quel est l'encodage de tes fichiers ? (je parle bien des fichiers, pas d'une balise meta)
Je pense à l'utf-8 et le byte of mark.
Marsh Posté le 23-07-2012 à 09:05:12
tiens, apparemment là tu peux trouver une piste : http://forum.alsacreations.com/top [...] ingue.html
Marsh Posté le 24-07-2012 à 20:36:38
Bon, j'ai essayé ça :
http://blog.unesourisetmoi.info/?a [...] erveur-ovh
c'est pas mieux.
Je vais essayer ton truc NewsletTux, je te tiens au jus.
Je suis toujours ouvert à toute proposition.
Marsh Posté le 28-07-2012 à 13:35:13
J'ai essayé de remplacer les variables de session par des cookies.
Le problème persiste, et uniquement sous IE.
En fait, j'ai l'impression que quand ça lui pète, il supprime toutes les variables de sessions et les cookies.
Par exemple, pour la variable $_COOKIE['niveau'], j'ai
Notice: Undefined index: niveau in C:\xampp\htdocs\logb\calcul\rentabilite.php on line 2
Même chose si je mets $_SESSION['niveau'] à la place du cookie (sachant que j'ai initialisé mes sessions, mes variables et tout avant).
Quelle est la bonne syntaxe pour supprimer un cookie sous IE ?
Merci
Marsh Posté le 31-07-2012 à 08:20:59
c'est ton IE qui est completement fucké, fait une remise à zero de tous ses paramètres, il y a une option dans IE pour ça
Marsh Posté le 31-07-2012 à 13:35:22
Ben, le problème, c'est que ça le fait pas qu'avec le mien.
J'ai essayé avec 3 PC différents, et avec des IE 8 et 9.
Marsh Posté le 09-07-2012 à 13:00:30
Bonjour à tous.
voilà, je suis en train de faire un site avec du PHP et des sessions utilisateurs.
J'ai donc mis mon session_start(); en début de chaque page.
Ca passe très bien avec firefox. Mais avec IE... aie aie aie (comme d'hab !). Les variables de session disparaissent. Pas toujours sur la même page, ça arrive aléatoirement.
Voilà. Si quelqu'un a des infos, je prends.
Merci