Gérer les sessions en php avec SessionManager

Hichxm

Membre
Inscription
15 Octobre 2013
Messages
1 118
Réactions
227
Points
5 721
RGCoins
25
Salut à tous, il y a maintenant quelque jour j'ai lancé un projet pour tout simplement gérer les sessions.
Je l'ai nommé SessionManager, il est disponible en open source sur Github et sur Packagist.


Je vais vous montrez comment l'utiliser de façon très simple et efficace.


1) Initialiser composer.
Bash:
composer init
composer require hichxm/session-manager


2) Initialiser SessionManager.
PHP:
use Hichxm\SessionManager\Session\PHP_SESSION_MANAGER;
use Hichxm\SessionManager\SessionManager;


$session_method = new PHP_SESSION_MANAGER();
$session = new SessionManager($session_method);


3) Lancer une session.
PHP:
$session->start();

4) Créer une variable.
Il y a differente method, la plus logique reste de passer par la class $session, en faisant ceci:
PHP:
$session->set($key, $value);
ou sinon avec les tableaux qui est aussi la maniere la plus proche des variables $_SESSION:
PHP:
$session[$key] = $value;

5) Récuperer la valeur d'une variable de session.
PHP:
$session->get($key);
ou sinon avec les tableaux qui est aussi la maniere la plus proche des variables $_SESSION:
PHP:
$session[$key];

6) Supprimer une variable de session.
PHP:
$session->unset($key);
ou sinon avec les tableaux qui est aussi la maniere la plus proche des variables $_SESSION:
PHP:
unset($session[$key]);

7) Arreter une session.
PHP:
$session->stop();


8) Acceder au fonction de la class $session_method:
Pour retrouver l'id de la session actuelle.
PHP:
$session->bridge->id();


La vous me direz oui t'es completement stupide d'utiliser ton truc a la con, je peut le faire moi même avec un session_start() et sa m'economise du temps et du code.
Et la je vous dit oui, tu a entierrement raison. Sauf que mon paquet et projet et la pour faire plus et simplement, dans quelque version on pourra changer le nom des cookies, les prefix etc...


Mais pas que, dans quelque temp vous verrez venir des paquet depuis Packagist qui se nomeront ainsi: session-manager-METHOD
On pourrait voir des sessions qui fonctionne avec des base de donnée ou d'autre avec des cookies uniquement etc...


Voila, je vous dit a plus pour un prochain tutoriel.
 
Je suis pas forcément convaincu de son utilité mais pourquoi pas :p
 
Je suis pas forcément convaincu de son utilité :p
Lorsque tu fait un "session_start()" pour lancé une session etc... tu ne calcule pas se qui se passe derriere, bas moi je te propose de modifier des valeurs allez plus loin dans ton code. Le rendre plus simple mais en aillant les bonne fonctionnalité.

Je te donne un exemple:
T'as un gros site, et tu te dit les sessions c'est bien mais quand y'en a trop je perd quelque miliseconde de retard (ouvrir, enregistrer, lire un fichier) et c'est pas de refus de les gagner tu decide de stocker les sessions dans une base de donnée. Au lieu de te compliquez la vie avec sa tu pourra utiliser le paquet session-manager-database qui fera tout uniquement et toi tu n'aura cas faire un $session->set... $session->get.... ou même un $session[..] etc...
 
Lorsque tu fait un "session_start()" pour lancé une session etc... tu ne calcule pas se qui se passe derriere, bas moi je te propose de modifier des valeurs allez plus loin dans ton code. Le rendre plus simple mais en aillant les bonne fonctionnalité.

Je te donne un exemple:
T'as un gros site, et tu te dit les sessions c'est bien mais quand y'en a trop je perd quelque miliseconde de retard (ouvrir, enregistrer, lire un fichier) et c'est pas de refus de les gagner tu decide de stocker les sessions dans une base de donnée. Au lieu de te compliquez la vie avec sa tu pourra utiliser le paquet session-manager-database qui fera tout uniquement et toi tu n'aura cas faire un $session->set... $session->get.... ou même un $session[..] etc...
C'est à dire calculer ? Au final, tu as un cookie qui te permet d'obtenir un id cet id unique est lié à un fichier côté serveur rien de plus :p

Pour des gros sites, j'utilise généralement un framework du type Laravel (et même pour des plus petits à vrai dire) :)
 
C'est à dire calculer ? Au final, tu as un cookie qui te permet d'obtenir un id cet id unique est lié à un fichier côté serveur rien de plus :p

Pour des gros sites, j'utilise généralement un framework du type Laravel (et même pour des plus petits à vrai dire) :)
Oui, mais les frameworks etc.. passe toujours par session de php mais a un moment sa fait gros et c'est même pratique d'avoir les variables serveur stocké dans une base de donnée pour un administrateur ou autre. Mais je sais que le paquet n'es pas la pour remplacer les sessions mais en gros sa donne une maniere altrenative.

Par exemple tu veut changer le nom du cookie, tu en a marre de PHPSESSID tu pourra le changer plus facilement avec le paquet que j'ai presenté par exemple. Tu pourra aussi changer le chemin des fichier coté serveur etc...
Mais quand tu utilise un framework tu ne prete pas attention a sa mais moi je trouve sa pratique lorsque tu fai un site de a à z.
 
Oui, mais les frameworks etc.. passe toujours par session de php mais a un moment sa fait gros et c'est même pratique d'avoir les variables serveur stocké dans une base de donnée pour un administrateur ou autre. Mais je sais que le paquet n'es pas la pour remplacer les sessions mais en gros sa donne une maniere altrenative.

Par exemple tu veut changer le nom du cookie, tu en a marre de PHPSESSID tu pourra le changer plus facilement avec le paquet que j'ai presenté par exemple. Tu pourra aussi changer le chemin des fichier coté serveur etc...
Mais quand tu utilise un framework tu ne prete pas attention a sa mais moi je trouve sa pratique lorsque tu fai un site de a à z.
C'est inutile de stocker d'autres variables autre que le SESSION_ID et la clé primaire liée à ton utilisateur car tu vas faire de la redondance de données à un moment ou un autre, l'intérêt de pouvoir stocker le SESSION_ID et la clé primaire de ton utilisateur est de pouvoir effectuer des déconnexions forcées.

En SESSION on stock généralement que la clé primaire de l'utilisateur, puis on récupérer ce même utilisateur une seule fois pour chaque requête ;)

La SESSION n'est pas faites pour stocker des données à grande échelle, c'est le rôle de ta base de données :p

Après j'ai peut-être pas compris ce que tu voulais dire mais tu veux juste utiliser le concept de SESSION en POO ^^
 
C'est inutile de stocker d'autres variables autre que le SESSION_ID et la clé primaire liée à ton utilisateur car tu vas faire de la redondance de données à un moment ou un autre, l'intérêt de pouvoir stocker le SESSION_ID et la clé primaire de ton utilisateur est de pouvoir effectuer des déconnexions forcées.

En SESSION on stock généralement que la clé primaire de l'utilisateur, puis on récupérer ce même utilisateur une seule fois pour chaque requête ;)

La SESSION n'est pas faites pour stocker des données à grande échelle, c'est le rôle de ta base de données :p
Tu peu stocké pas mal d'information, la page d'avant pour faire un retour depuis le site ou même des informations concernant l'utilisateur (adresse, mail, numero...) pour eviter de faire 2000 requetes vers la base de donnée.
 
Tu peu stocké pas mal d'information, la page d'avant pour faire un retour depuis le site ou même des informations concernant l'utilisateur (adresse, mail, numero...) pour eviter de faire 2000 requetes vers la base de donnée.
Oui pour des petites informations comme celles-ci ou encore les messages d'erreur (messages flash) mais pas pour stocker toutes les données concernant l'utilisateur, il faut bien optimiser tes requêtes pour récupérer les informations utiles ou non à ta situation (ta page) :)
 
Oui pour des petites informations comme celles-ci ou encore les messages d'erreur (messages flash) mais pas pour stocker toutes les données concernant l'utilisateur, il faut bien optimiser tes requêtes pour récupérer les informations utiles ou non à ta situation (ta page) :)
Oui logique, mais comme je t'ai dit c'est vraiment pour les petits sites pour faire des choses a droite a gauche apres on pourrai même avoir plusieur session avec different cookie :mmh:
Mais bon apres sa depend de t'es besoin apres tout chaque site est unique :)
 
Vu comme ça je trouve ça inutile, après faut voir si tu fais des amélioration ou paquet qui fonctionne avec a voir :mmh:
 
Voici un paquet que j'ai fai (c'est un exemple):
Je comprend pas l'utilité n'y pourquoi il y a les infos de la bdd pour les sessions ? (Je suis malade peux être j'ai louper un détails :/ )
 
Je comprend pas l'utilité n'y pourquoi il y a les infos de la bdd pour les sessions ? (Je suis malade peux être j'ai louper un détails :/ )
Ça a pas vraiment d'intérêt, surtout que si tu mets à jour une donnée il faut aussi mettre à jour ta session, ça revient à la même chose
 
Je comprend pas l'utilité n'y pourquoi il y a les infos de la bdd pour les sessions ? (Je suis malade peux être j'ai louper un détails :/ )
Ça a pas vraiment d'intérêt, surtout que si tu mets à jour une donnée il faut aussi mettre à jour ta session, ça revient à la même chose
Se n'est pas primordiale, pour vous donner un exemple CakePHP donne aussi la possibilité de stocké les sessions sur la base de donnée.
 
Retour
Haut