Re: [LA-discussions] gestion de session php

[ Thread Index | Date Index | More linuxarverne.org/discussions Archives ]


Salut,

En effet, par défaut la persistance des données de session dure le temps de la session du navigateur. On peut la modifier côté serveur avec la variable "session.gc_maxlifetime" (voir le fonctionnement du "garbage collector")

init_set("session.gc_maxlifetime", 3600); // Durée de session d'une heure
session_start();

Dans l'exemple de Daniel, les informations sont stockées en dur dans un array du fichier PHP.

Dans tout les cas, que l'on utilise ou non une base de donnée, l'identification/authentifications est perdu lors de la fermeture de session (plus exactement lors de la suppression du cookies de session côté client). Et ceci même en mettant une durée de session de plusieurs mois. 
Les informations de session peuvent être encore présentes sur le serveur et plus sur le client (c'est là qu'intervient le GC).
Dans tout les cas, si elles ne sont plus présentent sur l'un des 2 (client ou serveur), la connexion est perdu.


>Question subsidiaire : pourquoi trimballer en session son login et son password une fois ceux-ci vérifiés et >validés ? Chaque ressource est susceptible de refaire cette vérification / validation pour déterminer les >droits correspondants ? Ca signifie que chaque script du site doit contenir du code qui vérifie si le couple >user/pass fourni est présent dans une liste de user/pass autorisés ?


Le fait de garder le login en session permet justement de se passer de la vérification du couple "login/pwd" sur chaque script du site et uniquement vérifier la présence du login.
Pour résumé
- sur la page de login : vérification du couple "login/pass", si ok on enregistre le login en session
- sur les autres pages : vérification uniquement de la  présence du login en session donc connecté

Garder quelques informations en session permet d'y accèder plus rapidement par la suite et c'est non négligeable.
Ex :
echo "Salut ".$_SESSION['login'];

MàJ suite à ton 2ème mail :

Totalement d'accord avec toi : pour la modification des données par les utilisateurs, il faut passer par une base de donnée ou un système modifiable par n'importe quel utilisateur (BDD, cache, JSON, XML,....).
Après si Daniel veux faire les mises à jour manuellement (sans interface front-end), il peut très bien mettre à jour son array directement.


--

Matthieu


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/