[PHP] Stocker les sessions dans la base de donnée - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [PHP] Stocker les sessions dans la base de donnée (/showthread.php?tid=2808) |
[PHP] Stocker les sessions dans la base de donnée - OncleJames - 27-07-2008 Stocker les sessions dans la base de donnée Je laisserai le soin à chacun de se faire une idée sur le système, c'est une méthode comme une autre que j'ai adopté sur mon projet, et dont j'en suis plutôt content (Simple, efficace et sécurisé). Avant de réaliser tout ça, j'ai lu pas mal de fichiers la dessus, certaines parties de code sont issu d'autres programmeurs et ont été modifiées pour la réalisation de ce système. Il n'est pas encore optimiser au maximum ( il ne le sera jamais d'ailleurs ) Il permet entre autre de vérifier si une personne est connecté et si oui de récupérer toutes les informations de son compte (non pas bancaire). La base de donnée : La table sessions : Elle va contenir toutes les informations sur les sessions Code PHP :
sid => Identifiant de la session (26 caractères) Forme du sid : 9bk95rkq9k43drro0q28v2cb83 uid => Id du membre quand il sera connecté ipaddress => Adresse ip time => Dernière visite useragent => Navigateur utilisé login => Connecté ou invité 0: invité & 1:connecté failed_login => Tentative de connexion Les fichiers : La classe session : Code PHP :
Dans un premier temps on définit les variables de la classe. session_time : Durée de la session en secondes sid : Identifiant de la session qui sera transmis à son ouverture Dans le constructeur, on note l'appel de la fonction gc qui correspond au nettoyage des sessions dépassées, comme ça on ne travail que sur des sessions valides. La première fonction : start($sid) C'est elle qui va définir la procédure de fonctionnement des sessions 1) Récupération du sid 2) Écriture de la session (Création ou mise à jour) 3) Lecture de la session (Récupération des informations) Code PHP :
La seconde fonction : write() Cette fonction à un but essentiel, c'est elle qui va mettre à jour la session du client selon cette procédure. 1) Récupération du sid 2) Recherche d'une session existante pour ce client 2.1) Aucune session 2.1.2) On crée la session login = 0, le client n'est forcément pas connecté failed_login = 0, le client vient d'arriver 2.2) Une session existe déjà 2.2.2) On met à jour les informations de celle ci Code PHP :
La troisième fonction : read() Dans cette fonction on va récupérer les informations sur la session mais aussi sur l'utilisateur. 1) Récupération du sid 2) Lecture de la session dans la base de donnée 3) Récupération des informations sur le compte de l'utilisateur Les variables : session : Sert a stocker les informations sur la session user : Sert à stocker les informations sur le compte du client Code PHP :
La quatrième fonction : destroy() Le but de cette fonction est très simple, détruire ou supprimer une session. Le code parle de lui même Code PHP :
La cinquième fonction : gc() Une des fonctions les plus importantes, c'est elle qui va faire du nettoyage dans la base de donnée, enlevé toutes les sessions dépassées. Le code est simple. Code PHP :
Voila toute la classe session expliqué, je vous laisse l'assembler car le but n'est pas de copier coller simplement mais bien de comprendre le mécanisme que je trouve très intéressant. Pour le fichier php avec l'appel de la fonction rien de plus simple : Code PHP :
====================================================================================================== :!: Il y a ici la base du concept, libre à chacun de l'améliorer :!: Si certains l'ont vu, il est très simple avec ce système de savoir qui est en ligne, combien de personnes connectés, combien d'invités. Combien de personnes connectés : Code PHP :
En espérant que ce tutoriel vous aidera Discussion autour de ce tutoriel OncleJames |