$_SESSION réinitialisé aléatoirement

Résolu/Fermé
zeka95 Messages postés 6 Date d'inscription mardi 1 septembre 2009 Statut Membre Dernière intervention 1 septembre 2009 - 1 sept. 2009 à 00:40
TiboleParano Messages postés 498 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 7 avril 2015 - 1 sept. 2009 à 15:27
Bonjour,
D'habitude je trouve la solution de mes problèmes sur ce forum, mais aujourd'hui je ne l'ai pas trouvé, du coup je poste en espérant que quelqu'un saura m'expliquer le phénomène que je rencontre.
J'ai fait un site de gestion d'entreprise en php/mysql.
Le code marche, et n'avais pas de problème jusqu'à il y a 4jours. en effet mon problème est simple: d'un coup la variable de $_SESSION est soit détruite, soit réinitialisé! C'est à dire que lorsque je passe de page en page, d'un coup le site va revenir a la page d'accueil, car la variable de session est inexistante.
Même lorsque que je reste sur la même page, et que je refresh, au bout d'1 fois, de 3 fois, ou encore de 26 fois, le site va revenir a la page d'accueil, puisque la variable $_SESSION a été détruite. Le phénomène est donc aléatoire... Je précise que le seul moment ou j'ai un session_destroy est lorsque je met quit en $_GET, et pareil pour le unset($_SESSION).

Ps: après le refresh qui ramène a la page d'accueil, si je re-refresh, je reviens à ma page, avec ma variable de $_SESSION bien remplie... O.o

Merci pour vos futurs réponses.

11 réponses

Utilisateur anonyme
1 sept. 2009 à 10:05
as tu changé de version de PHP cela peut expliquer
0
zeka95 Messages postés 6 Date d'inscription mardi 1 septembre 2009 Statut Membre Dernière intervention 1 septembre 2009
1 sept. 2009 à 10:53
Bjr, merci pour ta réponse, mais non je n'ai pas changer de version en cours de développement.
0
TiboleParano Messages postés 498 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 7 avril 2015 61
1 sept. 2009 à 11:03
Hmm Hmm, bizarre, vous avez dit bizarre ?
en effet, si les variables de sesions pouvaient passer dans une autre dimension pour quelques instants, ce serait chiant.
est-ce que le retour à la page d'acceuil est le seul indice qui te fait croire que $_SESSION a été effacé ? est-ce que le problème ne pourrait pas être une redirection sur la page d'acceuil qui se lancerait à un mauvais moment ?
essaye de rajouter ceci sur ta page d'acceuil:
<?php session_start(); ?>
<pre>
<?php
print_r($_SESSION);
?>
</pre>

tu verras ce qui reste dans ton $_SESSION
0
zeka95 Messages postés 6 Date d'inscription mardi 1 septembre 2009 Statut Membre Dernière intervention 1 septembre 2009
1 sept. 2009 à 11:16
Bjr merci pour ta reponse!
J'ai déjà fait ce que tu me propose.
Je précise:
Pour la sécurité de la page, je teste, après chaque session_start(), une variable de session, qui permet de savoir si la personne qui a ouvert la session a le droit de venir sur cette page, exemple:

if ($_SESSION["admin"]["role"] != 4) header(location : index.php); ( 4 étant un type de membre précis)
sinon on continue d'afficher la page.

J'affiche donc après le session_start() avec un print_r($_SESSION) pour savoir si il n'y a que cette variable qui est détruite, mais en faite tout le tableau admin est détruit, ou inexistant.
les variables comme $_SESSION["YYY"], $_SESSION["XXX"], sont présentes, comme elles l'étaient avant, mais le tableau $_SESSION["admin"](qui contient les données du membre) est inexistante. Et des fois,si je re-refresh, $_SESSION["admin"] est re-là... Pourquoi seul admin est detruit et de facon aléatoire? Es-ce parce que j'ai une table qui s'appelle admin?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TiboleParano Messages postés 498 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 7 avril 2015 61
1 sept. 2009 à 11:39
j'aavoue n'avoir jamais utilisé de matrices (tableau à deux dimension) donc peut être que le bug est là, que le chargement est trop compliqué, essaye de remplacer en utilisant d'autre variables plus simple (directement dans $_SESSION[] et non dans $_SESSION['admin'][]) si le bug a disparu, tu sais ce que sa veu dire
0
zeka95 Messages postés 6 Date d'inscription mardi 1 septembre 2009 Statut Membre Dernière intervention 1 septembre 2009
1 sept. 2009 à 13:05
Merci encore,
Mais apparemment j'ai trouvé la solution,
Depuis 10minutes d'utilisation, plus de retour à la page index. Je mettrai résolu après 24h de test si ça marche tjrs.
en effet j'ai créer un dossier session, et j'ai mis avant le session_start() la commande suivante: session_save_path("./session/");
Et apparemment ceci marche.

Merci encore, Cordialement,
0
TiboleParano Messages postés 498 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 7 avril 2015 61
1 sept. 2009 à 13:36
Content d'avoir pu t'aider dans la démarche,
pour info peut tu expliquer ce à quoi sert cette fonction ? les prochaines personnes qui auront le problème pourront mieux comprendre.
Cela permet de ... sauvegarder la session, pas compliqué :P mais cela permet ausi de la recharger automatiquement, c'est sa ?
Merci
0
zeka95 Messages postés 6 Date d'inscription mardi 1 septembre 2009 Statut Membre Dernière intervention 1 septembre 2009
1 sept. 2009 à 13:51
D'après un site web concurrent:
"Comment faire cohabiter sur le même serveur deux applications utilisant les sessions ?

Dans le cas où un serveur HTTP héberge plusieurs applications PHP utilisant chacune les sessions, il peut y avoir des problèmes si plusieurs applications utilisent les mêmes variables de sessions (lorsque un utilisateur visite simultanément plusieurs applications).

Pour résoudre ce problème il suffit de définir un nom de session différent pour chacune des applications lors de la création de la session :

session_name('appli1');

session_start();

Puis de rappeler ce nom lors de l'utilisation des variables de la session dans l'application.

session_name('appli1');

session_start();

Autre solution, au démarrage d'une nouvelle session, pour éviter tout conflit dans l'utilisation des noms de variables de session, spécifier un autre chemin de sauvegarde des données de session avec session_save_path()."

Pour moi la première solution n'a pas marché, mais la deuxième oui.
Je n'avais pas deux applications en cours, mais cependant de forcer les sessions a un endroit a pu le résoudre, apparemment...
0
TiboleParano Messages postés 498 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 7 avril 2015 61
1 sept. 2009 à 14:40
ouaip, jpense qu'à chaque fois qu'il tombe sur cette ligne de code, il sauvegarde la session courante si session il y a, ou charge la session sauvegardée sinon. Ce qui expliquerai que cela fonctionne
au fait, par rapport au premier post, il est conseillé d'utiliser session_destroy() plutot que unset($_SESSION), apparament cela entrainerait des perturbations sur la session, notamment par rapport à l'utilisation de variables globales (je dis sa parcque je l'ai lu en coup de vent sur php manual .net, je farfouillait pour ton prb) et unset($_SESSION), ca me semble bien êre la fonction qui aurait créé ton problème, mais
1 tu as dis qu'elle ne se lancait que sur la page de déconexion
2 De toute facon t'as déja trouvé une solution
Merci d'avoir précisé ;) Bon cod@ge
0
zeka95 Messages postés 6 Date d'inscription mardi 1 septembre 2009 Statut Membre Dernière intervention 1 septembre 2009
1 sept. 2009 à 14:46
Bah je sais pas où était sauvegardé temporairement la session quand je n'avais pas mis cette commande, mais le fait de préciser l'endroit doit lui accordé plus de mémoire, ou une gestion plus facile, ou un truc du genre, ( chui pas du tout caler dans le font, j'connais que la forme :p), et oui les fonction unset et destroy ne se lance que si l'on on met dans le lien "quit" et qu'on est sur la page index...
En tt cas merci et bonne continuation! :)
0
TiboleParano Messages postés 498 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 7 avril 2015 61
1 sept. 2009 à 15:27
et lrpincipal:
have fun
tape toi des dizaines de bugs
be crazy
trouve la solution après deux dolipranes
soit fièr de toi
trouve un bug qui, finalement, est peut-être pratique sans le vouloir utile
attend la prochaine idée
ai peur de ce qu'il te reste à faire
...
..
.

I <3 logique, le programme est mon arme
0