[PHP]$_SESSION qui disparaissent

Fermé
brutax Messages postés 37 Date d'inscription mercredi 10 février 2010 Statut Membre Dernière intervention 26 février 2013 - 21 juil. 2012 à 18:49
bg62 Messages postés 23598 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 11 mai 2024 - 31 juil. 2012 à 12:22
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.

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. Ca me l'a fait une fois sous firefox, alors que c'est presque systématique sous IE après une dizaine de clics de navigation.

Après quelques recherches, je me suis demandé si ce n'était pas dû à une mauvaise gestion des cookies. Voici quelques bouts de code et quelques pistes.

j'ai essayé de remplacer
setcookie('cookie_form[totalvp]');


par
setcookie('cookie_form[totalvp']','',0,'/','',0);


c'est pas mieux.

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.

<?php
session_start();

include("blabla.php");
include("scripts.php");
?>



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

case "action" :
setcookie('cookie_charges[fpedago]', $_POST['fpedago'], (time() + 14400));
setcookie('cookie_charges[sstrait]', $_POST['sstrait'], (time() + 14400));
setcookie('cookie_charges[honoraires]', $_POST['honoraires'], (time() + 14400));
setcookie('cookie_charges[locationext]', $_POST['locationext'], (time() + 14400));
break;

case "charges" :
setcookie('cookie_form[faf'.$i.']', $_POST['faf'.$i], (time() + 14400));
setcookie('cookie_form[prepa'.$i.']', round(($_POST['faf'.$i]/(1-($_POST['tx_prepa'.$i]/100)))-$_POST['faf'.$i], 2), (time() + 14400));
setcookie('cookie_form[ac'.$i.']', $_POST['ac'.$i], (time() + 14400));
setcookie('cookie_form[cht'.$i.']', $_POST['cht'.$i], (time() + 14400));
setcookie('cookie_form[lecout'.$i.']', str_replace(" ", "", $_POST['lecout'.$i]), (time() + 14400));
setcookie('cookie_form[tx_prepa'.$i.']', $_POST['tx_prepa'.$i], (time() + 14400));
break;

default;

//et là on supprime tous les cookies du dessus
}


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 m'ennuie de procéder comme çar...

Voilà. Si quelqu'un a des infos, je prends.

Merci bien à tout le monde


A voir également:

4 réponses

bg62 Messages postés 23598 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 11 mai 2024 2 364
21 juil. 2012 à 18:56
0
brutax Messages postés 37 Date d'inscription mercredi 10 février 2010 Statut Membre Dernière intervention 26 février 2013 8
22 juil. 2012 à 10:19
Merci :-)

Je vais regarder ça.
Je posterai si je trouve une solution.
0
brutax Messages postés 37 Date d'inscription mercredi 10 février 2010 Statut Membre Dernière intervention 26 février 2013 8
24 juil. 2012 à 20:34
Bon, désolé bg62, ça ne fonctionne pas mieux T_T
0
bg62 Messages postés 23598 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 11 mai 2024 2 364
31 juil. 2012 à 12:22
ça m'étonne u peu quand même ... ;)
0
brutax Messages postés 37 Date d'inscription mercredi 10 février 2010 Statut Membre Dernière intervention 26 février 2013 8
Modifié par brutax le 28/07/2012 à 13:49
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
0