Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
759 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP]$_SESSION qui disparaissent sous IE

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[PHP]$_SESSION qui disparaissent sous IE

n°2148661
brutax
Posté le 09-07-2012 à 13:00:30  profilanswer
 

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.
 
 [:fegafobobos:2]  
 
Voilà. Si quelqu'un a des infos, je prends.
 
Merci

mood
Publicité
Posté le 09-07-2012 à 13:00:30  profilanswer
 

n°2148739
rufo
Pas me confondre avec Lycos!
Posté le 09-07-2012 à 17:29:02  profilanswer
 

Ca ne viendrait pas du mode de navigation "privée" par hasard?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2148744
brutax
Posté le 09-07-2012 à 18:28:41  profilanswer
 

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 ?

n°2148756
Archaygo
Posté le 09-07-2012 à 21:26:53  profilanswer
 

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 :
  1. session_start();
  2. $_SESSION['test'] = 'Session OK';


 
— Dans un fichier test.php :

Code :
  1. session_start();
  2. echo (isset($_SESSION['test'])) ? $_SESSION['test'] : 'Session lost...';


 
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.

n°2148776
brutax
Posté le 10-07-2012 à 00:23:15  profilanswer
 

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+ !

n°2148799
rufo
Pas me confondre avec Lycos!
Posté le 10-07-2012 à 08:38:16  profilanswer
 

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?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2148848
brutax
Posté le 10-07-2012 à 12:06:34  profilanswer
 

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+

n°2148852
brutax
Posté le 10-07-2012 à 12:25:50  profilanswer
 

Archaygo a écrit :


Pour vérifier, je te conseil de créer des pages extrêmement simples :
— Dans un fichier init.php :

Code :
  1. session_start();
  2. $_SESSION['test'] = 'Session OK';


 
— Dans un fichier test.php :

Code :
  1. session_start();
  2. echo (isset($_SESSION['test'])) ? $_SESSION['test'] : 'Session lost...';


 
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.


 
Bon, ben visiblement, je perds pas la session en faisant ça.
 
Y'aurait un problème dans mon code oO

n°2148886
Archaygo
Posté le 10-07-2012 à 14:48:53  profilanswer
 

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.


Message édité par Archaygo le 10-07-2012 à 15:05:32
n°2148924
brutax
Posté le 10-07-2012 à 16:25:32  profilanswer
 

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.

mood
Publicité
Posté le 10-07-2012 à 16:25:32  profilanswer
 

n°2148929
Archaygo
Posté le 10-07-2012 à 17:01:34  profilanswer
 

En solution de rechange, utilises les cookies.

n°2148930
Flow789
Bip Bip
Posté le 10-07-2012 à 17:12:46  profilanswer
 

Ç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.

n°2148934
Archaygo
Posté le 10-07-2012 à 17:37:16  profilanswer
 

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.


Message édité par Archaygo le 10-07-2012 à 17:39:43
n°2148935
brutax
Posté le 10-07-2012 à 17:41:57  profilanswer
 

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

n°2148937
Flow789
Bip Bip
Posté le 10-07-2012 à 18:18:43  profilanswer
 

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.

n°2148941
brutax
Posté le 10-07-2012 à 19:21:01  profilanswer
 

M'ouais...
 
Bon, je vous tiens au courant.

n°2148957
rufo
Pas me confondre avec Lycos!
Posté le 10-07-2012 à 23:08:15  profilanswer
 

register_globals est à off dans ton php.ini?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2148963
brutax
Posté le 11-07-2012 à 00:30:22  profilanswer
 

je te dis ça demain. bonne nuit/soirée.

n°2148986
brutax
Posté le 11-07-2012 à 12:40:24  profilanswer
 

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.

n°2149027
aideinfo
Posté le 11-07-2012 à 15:59:13  profilanswer
 

Cela ne viendrait il pas de tes paramètres de cookies ?


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
n°2149049
brutax
Posté le 11-07-2012 à 19:36:58  profilanswer
 

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+

n°2149100
aideinfo
Posté le 12-07-2012 à 10:59:01  profilanswer
 

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é.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
n°2149107
brutax
Posté le 12-07-2012 à 12:14:48  profilanswer
 

ok, je vais regarder. Merci.

n°2149328
networkinf​o
Posté le 14-07-2012 à 14:25:28  profilanswer
 

ajax ?

n°2149333
brutax
Posté le 14-07-2012 à 14:44:33  profilanswer
 

non, pas d'ajax.

n°2149546
brutax
Posté le 16-07-2012 à 19:23:16  profilanswer
 

dites, il y a des pages où, en fonction de ce qui a été choisi dans le formulaires, je fais :

 
Citation :


if(condition)
{
header('Location: ./calcul.php?page=prixvente&action=tempsform');  
exit("Chargement en cours..." );
}

 

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 !


Message édité par brutax le 16-07-2012 à 19:28:22
n°2149549
brutax
Posté le 16-07-2012 à 19:43:42  profilanswer
 

[:cheesecake]

n°2149631
networkinf​o
Posté le 17-07-2012 à 11:21:25  profilanswer
 

2 session_start() pas de pb
Si une session est déjà ouverte la 2e est ignorée

n°2149632
networkinf​o
Posté le 17-07-2012 à 11:22:16  profilanswer
 

J'ai eu le même pb aléatoire c'était à cause d'ajax
Je touchais aux sessions sans attendre le callback

n°2149693
brutax
Posté le 17-07-2012 à 19:05:56  profilanswer
 

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...


Message édité par brutax le 17-07-2012 à 19:09:34
n°2150009
monpub
http://monpub.com
Posté le 20-07-2012 à 12:27:51  profilanswer
 

merci jai des meme souci que vous


---------------
http://monpub.com
n°2150224
brutax
Posté le 21-07-2012 à 17:27:35  profilanswer
 

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 :
  1. setcookie('cookie_form[totalvp]');


 
par

Code :
  1. setcookie('cookie_form[totalvp']','',0,'/','',0);


 
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 :
  1. <?php
  2. session_start();
  3. include("blabla.php" );
  4. include("scripts.php" );
  5. ?>


 
Est-ce que ça viendrait pas de ma structure à base de switch case ? et/ou des calculs pour les valeurs des cookies ?

Code :
  1. switch ($page) {
  2. case "action" :
  3. setcookie('cookie_charges[fpedago]', $_POST['fpedago'], (time() + 14400));
  4. setcookie('cookie_charges[sstrait]', $_POST['sstrait'], (time() + 14400));
  5. setcookie('cookie_charges[honoraires]', $_POST['honoraires'], (time() + 14400));
  6. setcookie('cookie_charges[locationext]', $_POST['locationext'], (time() + 14400));
  7. break;
  8. case "charges" :
  9. setcookie('cookie_form[faf'.$i.']', $_POST['faf'.$i], (time() + 14400));
  10. setcookie('cookie_form[prepa'.$i.']', round(($_POST['faf'.$i]/(1-($_POST['tx_prepa'.$i]/100)))-$_POST['faf'.$i], 2), (time() + 14400));
  11. setcookie('cookie_form[ac'.$i.']', $_POST['ac'.$i], (time() + 14400));
  12. setcookie('cookie_form[cht'.$i.']', $_POST['cht'.$i], (time() + 14400));
  13. setcookie('cookie_form[lecout'.$i.']', str_replace(" ", "", $_POST['lecout'.$i]), (time() + 14400));
  14. setcookie('cookie_form[tx_prepa'.$i.']', $_POST['tx_prepa'.$i], (time() + 14400));
  15. break;
  16. default;
  17. //et là on supprime tous les cookies du dessus
  18. }


 
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...

n°2150248
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 22-07-2012 à 11:25:07  profilanswer
 

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.


Message édité par NewsletTux le 22-07-2012 à 11:25:30

---------------
NewsletTux - outil de mailing list en PHP MySQL
n°2150249
brutax
Posté le 22-07-2012 à 12:20:35  profilanswer
 

Comment je peux voir ça ?
P.S/ j'utilise notepad++

n°2150332
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 23-07-2012 à 09:05:12  profilanswer
 

tiens, apparemment là tu peux trouver une piste : http://forum.alsacreations.com/top [...] ingue.html


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°2150338
brutax
Posté le 23-07-2012 à 09:34:08  profilanswer
 

intéressant. Je testerai.
Merci

n°2150751
brutax
Posté le 24-07-2012 à 20:36:38  profilanswer
 

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.

n°2151389
brutax
Posté le 28-07-2012 à 13:35:13  profilanswer
 

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


Message édité par brutax le 28-07-2012 à 13:48:49
n°2151672
gatsu35
Blablaté par Harko
Posté le 31-07-2012 à 08:20:59  profilanswer
 

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


---------------
Blablaté par Harko
n°2151720
brutax
Posté le 31-07-2012 à 13:35:22  profilanswer
 

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.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP]$_SESSION qui disparaissent sous IE

 

Sujets relatifs
[PHP] - Aide sur codes PHP pour Club de Plongée ;)PHP - Caught une erreur
Tableau PHP & Fichier texteDévelopper la partie PHP d'abord ?
[PHP] Pub dans mes commentairesHTML/PHP - Positionner correctement un pied de page
CSS pas toujours prise en compte par IE ?[PHP] Conseil stockage variables
PhP: Comment passer d'une BDD SQL à SQLite?Récupération d'une date de réservation + num AI + session pseudo
Plus de sujets relatifs à : [PHP]$_SESSION qui disparaissent sous IE


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR