Les sessions en PHP
Transcription
Les sessions en PHP
Les sessions en PHP Frédéric Patin ([email protected]) [style] Codes Normal Titre 1 Titre 2 [/style] [chapeau] Les sessions en PHP constituent le seul moyen sûr de suivre un utilisateur tout au long de sa visite du site. En effet le protocole http ne prévoit aucun mécanisme qui permettrait de maintenir, au cours de différentes requêtes, des informations liées à l’utilisateur. Pour combler ce manque, PHP met à notre disposition les sessions. Grâce aux sessions, des informations, des variables, se transmettent de requête en requête, de page en page, pour chaque utilisateur au cours de sa visite. [/chapeau] [introduction] Si les cookies permettent aussi de maintenir des informations sur l’utilisateur du coté client, ils sont souvent critiqués, parfois interdits par le navigateur, et ne sont pas adaptés au stockage d’informations de sécurité et d’authentification. On peut aussi choisir de passer les variables directement dans les URL mais, en plus de surcharger les liens, ceci rend l'ensemble des informations sensibles visibles par tout un chacun. Pour un site utilisant PHP, on se tournera donc vers les sessions, très simples d’utilisation et offrant une totale transparence du coté client. Nous commencerons par décrire brièvement le principe de fonctionnement des sessions, puis on s’attardera sur l’utilisation concrète de celles-ci. Pour terminer, l’article donnera quelques erreurs fréquentes à éviter et quelques conseils d’utilisation. [/introduction] I Principe Général de Fonctionnement Lorsqu’un visiteur se connecte à un site utilisant les sessions, un identifiant unique généré aléatoirement par cryptographie (md5) lui est attribué. Cet identifiant, encore appelé ID de session, le suivra tout au long de sa visite et permet à PHP de retrouver la session qui lui correspond. Sur le serveur sont stockées l’ensemble des sessions de tous les visiteurs. Chaque session enregistrée sur le serveur contient un certain nombre de variables. En résumé, ce mécanisme associe à chaque visiteur une session, identifiée par un ID, et donc des données qui lui sont propres et qui vont le suivre tout au long de sa visite. Pour pouvoir retrouver la session qui correspond au visiteur à chaque requête, il faut pourtant que l’ID soit transmis d’une manière ou d’une autre de page en page. On verra par la suite qu’il y a plusieurs techniques pour ce faire, aucune n’étant parfaite, et qu’il faudra choisir astucieusement. Ceci constitue probablement la principale subtilité des sessions en PHP. II Utilisation des sessions II.1 Ouvrir une session Pour ouvrir une session il suffit d’appeler la fonction session_start();. Cette fonction initialise la session de l’internaute et doit impérativement être placée avant toute sortie du script vers la page html ou tout affichage (echo etc…) sous peine de créer une erreur et d’arrêter l’exécution du script (comme lorsque l’on utilise la fonction setcookie(); après un affichage). Lorsque cette fonction est appelée : • PHP cherche à récupérer un ID de session de l’internaute (par les moyens que nous présenterons plus tard). • Si PHP obtient un ID de session correct, il restitue la session de l’internaute ainsi que l’état des variables. Il s’agit du cas normal et l’internaute vient d’une autre page du site où sa session a déjà été ouverte (une page login.php par exemple). La session est alors réactivée • grâce à son ID, et les variables récupèrent leur valeur (par exemple le nom, le prénom de la personne etc…) PHP ne parvient pas à retrouver l’ID de session de l’utilisateur, soit parce qu’il a été perdu en cours de route, soit parce que l’utilisateur vient juste d’arriver sur le site et il s’agit de la première page qu’il demande. Une nouvelle session est créée, un nouvel ID de session est donné au visiteur. En général c’est à ce moment qu’on initialise les variables propres au visiteur pour les utiliser dans le script (par exemple dans le cas d’un forum on aura typiquement une variable $prenom, $num_posts, $avatar etc…). Que celle-ci soit restituée ou nouvellement créée, à partir du moment ou session_start a été exécutée la session de notre visiteur est ouverte. Il est à présent possible d’accéder aux variables de sessions, ce qui fera l’objet du paragraphe suivant. [Note] Lorsque la fonction session_start est placée après un affichage, PHP génère l’erreur suivante. Ne paniquez pas ! La localisation de l’affichage perturbateur est donnée directement dans le message d’erreur. Il suffit alors de se reporter à la ligne du script indiquée et d’éliminer ou déplacer ce qui génère cette sortie indésirable (typiquement un echo ou printf oublié !). Voici le message d’erreur qui s’affichera sur la page html obtenue : Warning: Cannot send session cookie - headers already sent by (output started at login.php:15) in login.php on line 17 Warning: Cannot send session cache limiter - headers already sent (output started at login.php:15) in login.php on line 17 Dans cet exemple, la function session_start se situe à la ligne 17 du script login.php, et l’affichage qui crée l’erreur se trouve ligne 15 de ce même script. Il faut donc déplacer l'affichage de la ligne 15 après la ligne 17. [/Note] II.2 Variables de sessions Une fois la session ouverte, nous pouvons enregistrer des variables de session, supprimer des variables de session ou en modifier le contenu. Les variables de session sont les variables qui sont propres à la session du visiteur et dont la valeur est conservée au cours de sa visite. A chaque ouverture de session avec session_start(), si un ID de session valide est disponible, leur valeur est restituée. Si la session est clôturée (par exemple : le visiteur quitte le site ou se déconnecte manuellement), les variables sont automatiquement supprimées. Les opérations d’enregistrement, de modification, et de suppressions de variables peuvent se faire de deux manières différentes. La première utilise les fonctions de php dédiées aux sessions, alors que la seconde utilise directement les variables globales de PHP pour accéder aux variables de la session. Nous verrons les deux techniques en parallèle avec en priorité la manière la plus simple de procéder, celle qui s’affranchit des fonctions, la seconde. Pour mieux comprendre les variables de session plaçons nous dans le cas de la connexion d’un utilisateur sur un site. Imaginons que celui-ci contienne une page appelée login.php avec un champ du formulaire html appelé login0 et pass0 qui POST sur login.php. Le visiteur inscrit son login et son pass pour se connecter. Il clique sur le bouton ‘connexion’ et les variables login0 et pass0 sont récupérées en entrée du script login.php. Voici comment se déroule alors la procédure d’ouverture de session : //Récupération de la valeur des variables du formulaire $monlogin = $_POST['login0']; $monpass = $_POST['pass0']; //On ouvre la session. Si l'utilisateur a déjà une session ouverte, elle est restituée. //Si l'utilisateur vient d'accéder au site, on lui génére un nouvel ID de session session_start(); //vérification dans une base des données que login et pass correspondent $res = myslq_query(SELECT * FROM … $infos = mysql_fetch_array($res); //dans le cas ou le pass et le login correspondent bien on enregistre des variables ! if(!strcmp($infos[login],$monlogin)&&! strcmp($infos[pass],$monpass)){ $_SESSION[‘page_count’] = 0 ; $_SESSION[‘name’] = $infos[prenom] ; //récupéré depuis la base de données $_SESSION[‘author_id’] = $infos[id] ; //récupéré depuis la base de données //attention il ne s’agit pas de l’id de session, c’est juste un identifiant qui peut servir pour repérer de manière unique les auteurs des messages d’un forum par exemple. $_SESSION[‘logged’] = 1 ; //positionnée à 1 cette variable nous indique que l’utilisateur est bien loggé. //Les quatre lignes de code précédentes peuvent aussi s’écrire avec les fonctions de sessions : //Les deux méthodes sont équivalentes. A vous de choisir ! $page_count=0 ; session_register("page_count"); //La variable $page_count fait maintenant partie de la session $name = $prenom ; session_register("name"); $author_id = $id ; session_register("author_id"); $logged = 1; session_register("logged"); //Fin de la partie qui nous intéresse. } Cette procédure d’authentification reste simpliste dans le but d’expliquer correctement les sessions. Pour une authentification plus sûre il faudrait rajouter un certain nombre de contrôles, et rajouter peut être un petit sleep(1) pour éviter les surcharges malencontreuses... Après l’exécution de ce script l’utilisateur ayant un login et un pass acceptés a obtenu un ID de session, qu’il va transmettre de page en page, et récupérer ainsi à chaque fois ses variables. Il y a donc deux techniques pour enregistrer une variable de session : • La première utilise directement les variables d'environnement de PHP. On peut directement créer une variable de session en ajoutant $_SESSION['mavariable']=valeur. Ensuite, sur les autres pages, une fois la session ouverte, on peut accéder à la valeur de cette variable tout simplement en utilisant directement $_SESSION['mavariable']. • La seconde technique requiert que la variable soit d'abord enregistrée c'est-à-dire attribuée à la session en cours. Au moment ou l'on crée la session, sur la page login.php, il faut penser à appeler session_register('mavariable'). Ensuite, sur les autres pages, une fois la session ouverte avec session_start, on pourra accéder directement aux variables de sessions par leur nom, $mavariable. Ceci est donc, à l'exception de la procédure d'enregistrement, plus simple que la première technique mais parfois un peu trompeur puisqu'on pourrait confondre une variable locale du script avec une variable de session. Par la suite nous utiliserons la première convention. Un exemple d’accès aux variables de sessions est donné par le script suivant : //Ne pas oublier l’ouverture de session quelques part en haut du script //permet de restituer les éventuelles variables de sessions du visiteur qui s'est loggé sur login.php session_start(); //A partir de ce moment si l'on a choisi d'utiliser les fonctions pour enregistrer les variables on peut //accéder à $name, $page_count etc… si la seconde technique a été utilisée on a accès à //$_SESSION['name'] etc… //…plus loin dans le script… //On va maintenant déterminer si le visiteur s’est authentifié correctement. //Si le visiteur c'est loggé sur la page login.php sa session doit donc contenir la variable //de session logged à 1. //Sinon la variable de session logged n'est pas enregistrée et n'est pas égale à 1 if($_SESSION[‘logged’]==1){ //Equivalent à if(session_is_registered("logged")&&$logged==1){ echo "Merci $_SESSION[‘name’], votre message est posté"; //ou encore directement puisque si la variable a été enregistrée comme variable de sessions //echo "Merci $name, votre message est posté. (Re)"; $_SESSION['page_count'] = $_SESSION['page_count'] + 1; echo "Au fait, vous avez visité $page_count aujourd'hui"; } else{ //Un message gentil. echo "Il faut être connecté pour poster sur ce forum. Vous pouvez vous connecter <a href=\"login.php\">ici</a>"; } Ainsi on peut accéder dans tous nos scripts à toutes les informations qui suivent le visiteur. Il reste néanmoins un point important à éclaircir. II.3 Propagation de l'ID de session De page en page, à chaque fois que la session est ouverte avec session_start(), PHP cherche à trouver un ID de session valide correspondant au visiteur. S'il n'en trouve pas, il considère que le visiteur vient d'arriver et crée une nouvelle session avec un nouvel id. Dans le cas contraire, PHP parvient à récupérer l'ID de session de plusieurs manières : • • • Un Cookie du coté client qui contient l'ID de session, et ayant une durée de vie nulle. Ceci implique, à juste titre, qu'une fois le navigateur arrêté, le cookie se détruit et l'ID est perdu (donc lorsque l'on se connecte à nouveau au site il faudra se logger etc…). Cette solution est gérée entièrement par PHP, et il n'y a pas lieu de se préoccuper du cookie. Elle nécessite simplement de bien avoir configuré PHP avec 'session.use_cookies' à 1. Bien qu'étant la plus simple, le fonctionnement de cette méthode est conditionné, coté client, par l'acceptation des cookies par le navigateur internet. Il s'agit de la méthode que j'utilise pour mon site, et principalement, il faut l'avouer, par paresse. Pour avoir recueilli un bon nombre de membres et leurs statistiques associées, il semblerait malgré tout que le système fonctionne bien pour 99% d'entre eux. Néanmoins, tout le monde n'accepte pas les cookies, donc pour un site plus sérieux voici deux alternatives plus fiables : Passer l'id de session dans l'URL. Cette solution fonctionne à tous les coups et ne dépend pas des paramètres de sécurité du client comme la méthode des cookies. Il suffit d'ajouter à tous les liens pointant vers des pages internes au site l'ID de session en paramètre au bout de la chaîne de l'URL. Par exemple : "index.php?".session_name()."=".session_id() ou index.php?<? echo session_name();?>=<? echo session_id(); ?> ou encore : printf('<a href="script.php?%s"> Link </a>', SID). SID vaut session_name()."=".session_id() si l'id de session n'a pas pu être enregistré comme cookie. Cette méthode charge un peu les URLs du site, mais fonctionne toujours. Elle ne demande aucune procédure particulière dans la page cible du lien : il suffit d'ouvrir tout simplement la session avec session_start et PHP récupèrera automatiquement l'ID de session grâce aux variables dans l'URL de la page. Au niveau indexation des pages par les moteurs de recherche, normalement l'ajout de cette chaîne sur tous les URLs du site ne gêne pas. Transmission de l'ID de session dans l'URL des liens automatiquement et de manière transparente. Une ultime alternative offrant un juste compromis entre la simplicité des cookies et la fiabilité de l'URL reste la possibilité de transmettre l'ID de session automatiquement et de manière invisible dans l'URL. Ceci ne fonctionnera que si PHP a été compilé avec l'option ' –-enable-trans-sid' et qu'on a configuré 'session.use_trans_sid' à 1. Malheureusement, cette méthode fonctionne uniquement avec les adresses relatives de page web (./index.php). PHP ne considère pas les adresses absolues (http://…) comme faisant partie du site et ne transmet pas l'ID dans l'URL. Enfin, cette méthode reste assez coûteuse dans la mesure ou PHP doit examiner chaque lien de la page. Par contre, l'ID de session ne vient pas encombrer les URL visibles dans la barre d'adresse du navigateur. Comme toujours, le choix de la méthode reste un compromis à trouver entre la simplicité à implémenter et la fiabilité. Pour un site naissant, où le problème de la simplicité d'ajout des sessions dans les scripts intervient moins, on se tournera de préférence vers les deux dernières méthodes. [img] Un extrait de phpinfo, avec les valeurs des variables de configuration. Les lignes qui nous interessent particulièrement ici sont .use_cookies, .use_only_cookies et .use_trans_sid. (fig1) [/img] [img] Un exemple de début de page phpinfo ou l'on peut notamment vérifier que l'option de compilation '— enable-trans-id' a été utilisée. (fig2) [/img] [note] Pour rappel, les options de compilation de php ainsi que les variables de configuration sont récapitulées par la fonction phpinfo(). On pourra donc créer un script php et simplement y ajouter <?php phpinfo(); ?>. Parmi l'ensemble des informations affichées par ce script, on pourra notamment s'intéresser ici à la section 'session' (fig1) et aux options de compilation (fig2) dans lesquelles apparaissent les options citées précédemment. Pour comparer les configurations PHP des différents hébergeurs, la plupart proposent une page 'phpinfo' publique qui appelle cette fonction. Le site http://www.centrale-lyon.org/ng/phpinfo.html répertorie des liens vers les pages phpinfo de la plupart des hébergeurs les plus populaires. [/note] II.4 Terminer la session Avant de terminer une session, il peut être utile se supprimer uniquement certaines des variables de sessions. Dans le cas où la méthode des variables globales $_SESSION comme variables de sessions a été choisie, il suffit de taper : $_SESSION['mavariable_enregistree']=""; ou encore : $_SESSION['name'] = FALSE;. Dans le cas ou l'on enregistre les variables à l'aide de la fonction session_register("variable"), il existe la fonction session_unregister("variable") qui se chargera de détruire une variable de session enregistrée. Dans les deux cas, seules les variables concernées sont détruites et la session reste active. Le fait que PHP fonctionne du coté serveur et sur requêtes, empêche celui-ci de savoir, a priori, si un visiteur est simplement en train de lire une page du site depuis longtemps ou s'il a simplement quitté celui-ci. Lorsqu'une session reste inactive au delà d'un certain temps gc_maxlifetime (variable de configuration de php au même titre que use_trans_sid, use_cookies etc…) elle est détruite automatiquement. PHP fonctionnant uniquement sur requête, on ne va pas parcourir à chaque fois l'ensemble des sessions à la recherche des sessions éteintes. Ainsi le paramètre gc_probability permet de régler la probabilité de parcourir les sessions au moment de chaque exécution de script (de 1 à 100). Par exemple si cette variable vaut 100, à chaque requête PHP parcourt l'ensemble des sessions à la recherche de celle qui datent de t-gc_maxlifetime secondes pour les détruire. Ces mécanismes de clôture de session sont surtout important dans le cas d'une transmission de l'ID de session par URL. En effet, dans ce cas il ne faudrait pas qu'un utilisateur ayant placé un URL avec ID de session dans ses favoris, et ayant quitté le site depuis un certain temps, revienne et continue sa session. Dans un site à moindre fréquentation on pourra donc augmenter gc_probability sans craindre une perte de performance et en s'assurant de ne pas oublier des sessions éteintes à détruire. Les cookies pour transmettre l'ID de session ont une durée de vie de 0. Ainsi, dans le cas ou PHP utilise les cookies pour transmettre l'ID de session il n’y a pas de risque de retrouver sa propre session après avoir fermé le navigateur. Les cookies ayant une durée de vie nulle sont automatiquement supprimés une fois le navigateur fermé. Par contre, ceci ne permet toujours pas à PHP de savoir si vous avez effectivement quitté le site ou si une page est en cours de lecture. Les paramètres précédents interviennent donc dans une moindre mesure puisqu'il suffit de rallonger gc_maxlifetime sans craindre qu'utilisateur retrouve une ancienne session à son arrivée sur le site. Enfin, l'idéal reste de mettre à disposition un lien 'déconnexion' qui pointe sur un script qui appelle la fonction session_destroy() détruisant la session active. Dans la mesure ou certains visiteurs vont prendre la peine de se logger avec un login et un mot de passe, ils vont probablement aussi chercher une manière de se délogger. Sur mon propre site, n'ayant pas ajouté cette fonction, j'ai reçu plusieurs remarques de personnes qui ne trouvaient pas le bouton pour se délogger. A noter que si vous utiliser cette fonction et les variables globales $_SESSION, il faudra d'abord effacer toutes les variables de session avec le code suivant : $_SESSION = array(); session_destroy(); Bien sur avant de placer session_destroy il faut avoir ouvert une session avec 'session_start' auparavant, afin que PHP sache quelle session détruire. III Quelques remarques III.1 Résumé des fonctions de sessions Résumons ici le rôle des fonctions évoquées dans l'article. Pour plus de détails le lecteur pourra évidemment se reporter au manuel PHP en ligne. Les fonctions à retenir seraient les suivantes (à noter que certaines n'ont pas d'utilité dans le cas ou l'on utilise les variables globales $_SESSION) : • • • • • • • • • • session_start : Ouvre la session ou la rétablit selon qu'ID de session valide est disponible. Cette fonction est à placer au début de chaque script utilisant les sessions et avant tout affichage du script. session_id([id]) : Retourne l'ID de session en cours ou force l'ID de session à utiliser. Cette fonction se montre particulièrement utile dans le cas ou l'ID est transmit dans l'URL manuellement. Elle sert à utiliser l'ID passé dans l'URL, ou encore à contruire l'URL. session_name([nom]) : De la même manière et dans le même but que la fonction précédente, permet de définir le nom de la session ou de rédupérer celui-ci. Le nom par défaut est défini par le session.name défini dans la configuration de PHP. session_register("variable") : Enregistrer une variable comme variable de session qui sera transmise de page en page. session_is_registered("variable") : Vérifie si une variable est enregistrée dans la session active. session_unregister("variable") : Détruit une variable de session de la session active. session_destroy() : Détruit la session active. session_unset() : Détruit l'ensemble des variables de la session, sans détruire la session elle-même. session_write_close() : Sauvegarde toutes les variables de sessions et ferme la session (sans la détruire). Normalement cette fonction est appelée automatiquement à la fin d'un script. L'usage de cette fonction est plutot réservé aux sites avec frames. Normalement le serveur PHP n'autorise qu'un seul script à la fois à utiliser une session donnée. Dans le cas ou un site avec frames tente de charger toutes les pages à la fois avec accès à la même session, PHP impose d'exécuter les scripts séquentiellement et on voit alors les frames apparaître les unes après les autres. On peut alors gagner du temps en appelant cette fonction dès que l'on a plus besoin des variables de session dans le script. session_regenerate_id() : Créer un nouvel ID et remplace l'existant dans une session ouverte, sans perdre une seule variable de session. Cette fonction peut être utilisée pour brasser plus fréquemment les ID de session et rendre certaines techniques de 'vol' d'ID plus délicates. III.2 Conseils et utilité En réalité les sessions sont incontournables dans certains cas particuliers seulement. A partir du moment où l'on souhaite avoir un forum, un site commercial avec des achats en ligne, plusieurs espaces de discussion, dès qu'il s'agit de transmettre des données propres à un visiteur au cours de sa visite on y fera appel. En revanche, quand ce n'est pas nécessaire il vaut mieux éviter. Notamment, on utilisera pas les sessions pour envoyer des données ou transmettre des informations vers une seule page (au pire utiliser des champs hidden d'un formulaire html). Vous l'avez compris, les sessions ne gardent pas leurs données entre chaque visite, elles sont donc en générales associées à une base MySQL. En ce qui concerne mon expérience personnelle, je n'ai eus à y recourir que récemment parce que je voulais permettre à mes visiteurs d'être identifiés sur mon site et pouvoir poster dans toutes les sections en étant authentifiés. Une dernière astuce : On peut visualiser l'ensembles des variables de la session ouverte en ajoutant ce simple code à titre de vérification : echo "Sessions: <pre>"; print_r($_SESSION); echo "</pre>"; III.3 Sessions et sécurité Si le client est lui-même responsable de transmettre l'ID de session à utiliser, comment empêcher quelqu'un d'usurper la session d'un autre. Tout d'abord parce que l'ID de session est une chaîne de 32 chiffres hexadécimaux. Il est donc 'rare', même en tâtonnant de manière brutale, de tomber au hasard sur l'ID de session de quelqu'un d'autre ! Le manuel PHP stipule clairement que le module de session ne peut garantir que les informations stockées ne sont accessibles qu'à la personne ayant débutée la session. Il ajoute que c'est à la charge du webmaster de se donner les moyens d'authentifier un ID de session à un visiteur. La manière de réaliser cela ne me semble pas triviale, il est simplement important d'être conscient qu'une session n'est pas forcément confidentielle. Le manuel PHP recommande par exemple, d'activer la variable 'session.use_only_cookies' si l'on craint les techniques de piratage qui consistent à demander directement un ID de session à quelqu'un sous un prétexte quelconque (techniques dites de 'social engineering'). Celle-ci impose aux sessions d'utiliser les cookies comme moyen de transmission de l'ID pour fonctionner. Ainsi il existe plusieurs techniques pour récupérer un ID de session actif, autres que celles mentionnées précédemment. Par exemple si votre site contient un lien vers le site d'une personne peut scrupuleuse. Lorsqu'un visiteur clique sur ce lien et arrive sur le site du fraudeur celui-ci peut récupérer l'adresse du 'referer' ou site amont et donc l'ID éventuellement contenu dans l'URL… Enfin, un fraudeur peut toujours tenter d'écouter le traffic d'un client ou du serveur et récupérer les ID de sessions qui sont transmis en clair dans le flux de données. La seule parade est d'imposer une connexion cryptée SSL aux clients et au serveur ! Enfin, il est souvent recommandé à chaque ouverture de session de créer un nouvel ID de session. Ceci permet de brasser les ID de sessions et de brouiller au maximum les curieux. Avec la fonction session_regenerate_id() on peut attribuer un nouvel ID à la session en cours, néanmoins cette fonction ne détruit pas l'ancienne session, et les variables existent en double. En fait, cette fonction se contente de copier la session vers un nouvel ID. On pourrait, à la place, utiliser le code suivant: //On ouvre la session avec l'ID en cours session_start(); //On copie les variables de session $tmpSession=$_SESSION; //On détruit les anciennes variables de session $_SESSION = array(); //Destruction de la session session_destroy(); //Utilisation du nouvel ID session_id(md5(microtime())); //Ouverture de la nouvelle session session_start(); //Copie des variables $_SESSION = $tmpSession; La sécurité et la confidentialité avec les sessions constituent un vaste sujet de discussion. Heureusement c'est aussi un sujet largement abordé sur Internet. Le lecteur peut éventuellement se reporter à l'excellente présentation traitant de la sécurité des sessions en [5]. Conclusion Reste à rappeler que les sessions sont incontournables pour un site ayant une communauté de membres. Il s'agit de l'unique manière de réaliser en PHP un système fiable d'enregistrement et de connexion d'utilisateurs sur un site. Avant de se lancer directement dans l'implantation des sessions sur un site, mieux vaudra prendre le temps au préalable de clarifier quelques points délicats évoqués au cours de l'article : la transmission de l'ID, la sécurité et la confidentialité. Les sessions ayant une durée de vie limitée au temps de visite, elles sont généralement couplées à une base de donnée MySQL qu'il faudra concevoir en conséquence. 4259 Références [1] : [http://www.phpfreaks.com/tutorials/41/0.php] : php freaks, PHP Sessions Introduction. [2] : [http://www.phpinfo.net/articles/article_sessions.html] : PHPInfo.net, Guillaume Smet, La Gestion des sessions avec PHP4. [3] : [http://www.zend.com/zend/tut/session.php] : Zend, The php Company, Tobias Ratschiller, Session handling with PHP4. [4] : [http://fr.php.net/session] : PHP Manual, CXI. Session Handling Functions. [5] : [http://shiflett.org/talks/oscon2004-securing-php-sessions/0] : Chris Shiflet, Securing PHP Sessions. [6] : [http://www.phptools4u.com/articles/view.php?article=4] : PHPTools4U, Mathieu Lesniak, Les sessions PHP. [7] : [http://xqus.com/archives/regenerate-php-session-id] : xqus.com, xqus, Regenerate Session Id.