|
Dernière réponse | |
---|---|
Sujet : Question sur la durée de vie des SESSIONS en PHP ? | |
Alex01 | OK, c'est très sympa :hello: !
Merci de m'avoir aidé :jap: :jap: Mais je ne pense pas être le seul a avoir eu un problème avec les sessions vu la fréquentation du topic ! A+ Alex01 :bounce: |
Aperçu |
---|
Vue Rapide de la discussion |
---|
Alex01 | OK, c'est très sympa :hello: !
Merci de m'avoir aidé :jap: :jap: Mais je ne pense pas être le seul a avoir eu un problème avec les sessions vu la fréquentation du topic ! A+ Alex01 :bounce: |
Sh@rdar | dans le php.ini :
session.name = PHPSESSID ; name of the session is used as cookie name comme Free est passé au php4, on va devoir faire un topic spécial cours de sessions ne pas confondre, nom de la session (et du cookie), identifiant, et données. |
Alex01 |
|
Alex01 | Ok, je comprend et je te remercie pour toutes ces infos
A+ Alex01 |
Sh@rdar | attention, dans le cookie il n'y a que le nom de la session, pas les données sinon ça sert plus à rien..
en fait y deux façons de transmettre l'id de session, par l'URL (la suite de chiffres et lettres qui rallonge tout là ) ou bien de stocker ça dans un cookie, mais les données elles sont stockées sur le disque du serveur et pas ailleurs (sauf si tu sauve ta session dans une bdd mysql, encore une fois voir la doc). |
Alex01 | Ok, merci beaucoup ! :hello: Redernière question finale : Les paramètres sont passés par URL et Cookie. ce dernier porte t'il le même nom que la session ? (de manière à ce que je puisse reconnaitre l'utilisateur lorsqu'il reviendra et lui attribuer la même session qu'à la première visite :heink: ) Alex01 :jap: |
Sh@rdar | y a des fonctions de sauvegarde de session (cf la doc) donc on doit pouvoir les réutiliser après.
d'ailleurs tu peux facilement savoir de quelle session il s'agit en faisant un echo session_id() |
Alex01 | OKOKOKOKOKOKOKOKOK
:hap: :hap: :hap: :hap: :hap: :hap: ça fonctionne !!!!!!!! :lol: :lol: :lol: :pt1cable: Je te rmercie :jap: Petite question: comment peux les récupérer lors d'une nouvelle consultation du site puisque les noms de session que cré PHP sont aléatoires ? |
Alex01 |
|
Sh@rdar | oh put...
t'as 1 pourcent de chance de nettoyer tres fichiers à la création d'une nouvelle session :heink: monte le session.gc_probability à 100 dans ton php.ini il va tout vider à chaque création de session (enfin toutes les sessions marquées comme expirées) |
Alex01 |
|
Lord II |
[jfdsdjhfuetppo]--Message édité par lord ii--[/jfdsdjhfuetppo] |
Sh@rdar | t'as essayé avec mon truc ? (style 10 minutes de durée de vie et 100% de nettoyage des fichier ?)
y a quand même un (petit) souci : comme le vidage des fichiers se fait à la création d'une nouvelle session, t'auras à chaque fois un fichier qui reste au minimum :D [jfdsdjhfuetppo]--Message édité par Sh@rdar--[/jfdsdjhfuetppo] |
Alex01 | je ne comprend pas ce que tu veux me dire ! lordii |
Sh@rdar | faut pas oublier qu'une session c'est comme un cookie, tu peux toujours la créer et venir la rechopper 10 jours plus tard !
j'ai tester chez moi mais avec un script simple et propre qui détruit à chaque fois la session avant de quitter. |
Sh@rdar | ok alors j'ai trouvé le truc :
session.gc_probability = 1 la probabilité sur 100 que php lance le "nettoyage" des fichiers de session au démarrage d'une nouvelle session donc en mettant à 100 il "nettoyera" à chaque fois les sessions marquées comme inutiles session.gc_maxlifetime = 1440 le temps en secondes après lequel les sessions pourront être "nettoyées". |
Lord II | Deja explique qu'il ne peut pas se détruire à la fermeture du navigateur. Quand la page est hargé il n'y a plus de liaison avec ton serveur jusqu'à ce que l'utilisateur click sur un lien |
Alex01 | 1er fichier : index.php $a=5; session_register("a" ); 2em fichier : index2.php (debut de programme) session_start(); echo $a; (a=5 ok, pas de pb) :heink: au moment ou je suis passé à index2.php, il c'est créé un fichier : sess_014e59f2da24251b755e67b8521647c1 dans le repertoire "sessiondata" du disque dur du serveur. Maintenant je ferme internet explorer et là :gun: le fichier sess_014e59f2da24251b755e67b8521647c1 existe toujours et encore ! :ouch: (10 heures plus tard il est tjrs là!) Il devrait s'effacer losque le navigateur se ferme et non pas à l'exécution de la fonction session_destroy() (je pense ?) l'utilisateur n'est pas obligé d'aller à la dernière page du site pour quitter ! Alex01 :bounce: |
Sh@rdar | ok donc là rien de bizzarre, est ce que ton script détruit bien la session ou pas ? au pire tu file un bout de code de la création/utilisation de la session.
sinon session_destroy() |
Alex01 | session.save_handler = files
session.save_path = C:\PHP\sessiondata session.use_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.cookie_path = / session.cookie_domain = session.serialize_handler = php session.gc_probability = 1 session.gc_maxlifetime = 1440 session.referer_check = session.entropy_length = 0 session.entropy_file = session.cache_limiter = nocache session.cache_expire = 180 session.use_trans_sid = 1 url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" Voici le contenu du fichier php.ini concernant les sessions. But du jeux : détruire les fichiers session dans le repertoire c:\php\sessiondata\ Théoriquement ça doit être fichier et cookie avec une durée de vie nulle pour les cookies (fermeture du nav.) Peux tu m'aider ? :cry: Alex01 |
Sh@rdar | ok alors utilisons notre cervelle quelques instants
- comment fonctionnent tes sessions ? cookie et fichier ou juste fichier ? - quelles sont les valeurs des param que tu donnes dans ton php.ini ? est ce que ta session est bien détruite ? si jamais y a un cookie sur le nav du visiteur on peut très bien la récupérer X temps après (peu probable mais ça dépend de la conf de php) |
Alex01 | OK pas 2 topics identiques :cry: mais as tu une reponse à ma question initiale :??: Bref, ce sujet va disparaitre dans les catacombes du forum d'ici ce soir car j'ai bien l'impression que nul a de reponse ! Merci quand même et pas 2 topics identiques (ok compris) :sol: Alex01 :bounce: |
Lord II | up
( tu as compris ?) |
Alex01 | up |
Alex01 | c'est quoi UP :??: |
Lord II | up |
Alex01 | Bonjour à tous, :hello: Voici mon petit problème : lorsque je crais des sessions, ces dernières s'enregistrent dans le repertoire "sessiondata" de mon serveur. Par contre, lorsque je quitte le navigateur, je m'attend à ce que ces sessions (fichiers sur mon serveur) soient détruites; hors ce n'est pas le cas ! J'ai trouvé deux paramètres dans le php.ini qui sont les suivant : session.gc_maxlifetime fixe la durée, en secondes, au−delà de laquelle les données considérées comme inutiles seront supprimées. session.cache_expire spécifie la durée de vie des pages de session cachées, en minutes, mais sans que cela ait d'effets sur le limiteur "nocache". Par défaut, 180. J'ai fermé mon navigateur hier soir, et quand je suis revenu ce matin, mes sessions n'étaient pas effacées malgrè les deux paramètres ci-dessus. Comment faire pour que mes sessions soient supprimées après la visite de l'internaute ? :??: Merci d'avance :jap: Alex01 |