Comment utiliser les sessions et les variables de session en PHP

La gestion de session est un concept clé en PHP qui permet de conserver les informations des utilisateurs sur toutes les pages d'un site Web ou d'une application. Dans cet article, vous apprendrez les bases de la gestion de session en PHP. 

Nous allons commencer par expliquer le fonctionnement des sessions et leur relation avec les cookies. Ensuite, nous examinerons quelques extraits de code qui montrent comment utiliser des sessions. Vous apprendrez à créer et à détruire des sessions et à modifier les variables de session..

Qu'est-ce qu'une session en PHP?

Une session est un mécanisme permettant de conserver des informations sur les différentes pages Web afin d'identifier les utilisateurs lorsqu'ils naviguent sur un site ou une application. Vous vous demandez pourquoi des sessions sont nécessaires pour un site Web? Pour voir pourquoi des sessions sont nécessaires, nous devons revenir en arrière et voir comment le protocole HTTP est conçu pour fonctionner.

Le protocole HTTP est un protocole sans état, ce qui signifie qu’un serveur ne peut pas se souvenir d’un utilisateur spécifique entre plusieurs demandes. Par exemple, lorsque vous accédez à une page Web, le serveur est simplement responsable de fournir le contenu de la page demandée. Ainsi, lorsque vous accédez à d'autres pages du même site Web, le serveur Web interprète chaque requête séparément, comme si elles étaient indépendantes les unes des autres. Le serveur n'a aucun moyen de savoir que chaque requête provient du même utilisateur..

Le diagramme suivant décrit le protocole HTTP en un mot.

Dans ce modèle, si vous souhaitez afficher des informations spécifiques à l'utilisateur, vous devez authentifier un utilisateur dans chaque demande. Imaginez si vous deviez saisir votre nom d'utilisateur et votre mot de passe sur chaque page affichant les informations de votre profil! Oui, ce serait lourd et pas pratique du tout, et c'est là que les sessions entrent en scène.

Une session vous permet de partager des informations sur les différentes pages d'un site ou d'une application. Elle vous aide donc à conserver l'état. Cela permet au serveur de savoir que toutes les demandes proviennent du même utilisateur, permettant ainsi au site d'afficher des informations et des préférences propres à l'utilisateur..

Flux de connexion avec des sessions et des cookies

Passons rapidement en revue le flux de connexion commun d’un site Web pour comprendre ce qui se passe dans les coulisses..

  1. Un utilisateur ouvre la page de connexion d'un site web.
  2. Après avoir soumis le formulaire de connexion, un serveur à l'autre extrémité authentifie la demande en validant les informations d'identification entrées..
  3. Si les informations d'identification entrées par l'utilisateur sont valides, le serveur crée une nouvelle session. Le serveur génère un nombre aléatoire unique, appelé identifiant de session. Il crée également un nouveau fichier sur le serveur qui est utilisé pour stocker les informations spécifiques à la session..
  4. Ensuite, un identifiant de session est renvoyé à l'utilisateur, avec la ressource demandée. En coulisse, cet identifiant de session est envoyé dans le PHPSESSID cookie dans l'en-tête de la réponse.
  5. Lorsque le navigateur reçoit la réponse du serveur, il rencontre le problème PHPSESSID en-tête de cookie. Si les cookies sont autorisés par le navigateur, il enregistrera cette PHPSESSID cookie, qui stocke l'identifiant de session transmis par le serveur.
  6. Pour les demandes ultérieures, le PHPSESSID Le cookie est renvoyé au serveur. Lorsque le serveur rencontre le PHPSESSID cookie, il essaiera d’initialiser une session avec cet identifiant de session. Pour ce faire, il charge le fichier de session créé précédemment lors de l'initialisation de la session. Il initialisera ensuite la variable de tableau super-globale $ _SESSION avec les données stockées dans le fichier de session.

De cette manière, les données de l'utilisateur sont préservées dans plusieurs requêtes et l'utilisateur reste connecté tout au long de la session..

Le diagramme suivant décrit le fonctionnement du protocole HTTP avec les sessions..

Maintenant que vous avez vu une brève introduction au fonctionnement des sessions, nous allons créer quelques exemples pratiques pour montrer comment créer et manipuler des variables de session..

Comment démarrer une session

Dans cette section, nous verrons comment démarrer une session en PHP.

Chaque fois que vous souhaitez gérer les variables de session, vous devez vous assurer qu'une session est déjà démarrée. Il existe plusieurs façons de démarrer une session en PHP..

Utilisez le session_start Une fonction

C’est la méthode que vous verrez le plus souvent, où une session est démarrée par le session_start une fonction.

La chose importante est que le session_start La fonction doit être appelée au début du script, avant que toute sortie soit envoyée au navigateur. Sinon, vous rencontrerez l'infâme Les en-têtes sont déjà envoyés Erreur.

Démarrer automatiquement une session

S'il est nécessaire d'utiliser des sessions dans votre application, vous pouvez également choisir de démarrer une session automatiquement sans utiliser la session_start une fonction.

Il y a une option de configuration dans le php.ini fichier qui vous permet de démarrer une session automatiquement pour chaque demande-session.auto_start. Par défaut, il est défini sur 0, et vous pouvez le configurer pour 1 activer la fonctionnalité de démarrage automatique.

session.auto_start = 1

D'autre part, si vous n'avez pas accès à la php.ini fichier, et que vous utilisez le serveur Web Apache, vous pouvez également définir cette variable à l'aide de la commande .htaccess fichier.

php_value session.auto_start 1

Si vous ajoutez la ligne ci-dessus dans la .htaccess fichier, qui devrait démarrer une session automatiquement dans votre application PHP.

Comment obtenir un identifiant de session

Comme nous l'avons vu précédemment, le serveur crée un numéro unique pour chaque nouvelle session. Si vous voulez obtenir un identifiant de session, vous pouvez utiliser le ID de session fonction, comme indiqué dans l'extrait suivant.

Cela devrait vous donner l'identifiant de session actuel. le ID de session La fonction est intéressante en ce sens qu'elle peut également prendre un argument, un identifiant de session. Si vous souhaitez remplacer l'id de session généré par le système par le vôtre, vous pouvez le fournir au premier argument du ID de session une fonction.

Il est important de noter que le ID de session la fonction doit être placée avant la session_start appeler lorsque vous souhaitez démarrer une session avec un identifiant de session personnalisé.

Comment créer des variables de session

Dans cette section, nous verrons comment initialiser les variables de session en PHP.

Comme nous en avons discuté plus tôt, une fois la session démarrée, le $ _SESSION le tableau super-global est initialisé avec les informations de session correspondantes. Par défaut, il est initialisé avec un tableau vide et vous pouvez stocker plus d'informations en utilisant une paire clé-valeur..

Examinons l'exemple de script suivant qui montre comment initialiser des variables de session..

Comme vous pouvez le constater, nous avons démarré une session au début du script en utilisant le session_start une fonction. Suite à cela, nous avons initialisé quelques variables de session. Enfin, nous avons accédé à ces variables en utilisant le $ _SESSION super global.

Lorsque vous stockez les données dans une session à l'aide du $ _SESSION super-global, il est finalement stocké dans un fichier de session correspondant sur le serveur qui a été créé lors du démarrage de la session. De cette manière, les données de session sont partagées entre plusieurs demandes..

Comme nous en avons discuté, les informations de session sont partagées entre les demandes. Ainsi, les variables de session initialisées sur une page sont également accessibles depuis d'autres pages jusqu'à l'expiration de la session. Généralement, une session expire à la fermeture du navigateur..

Comment modifier et supprimer des variables de session

Vous pouvez modifier ou supprimer des variables de session créées précédemment dans l'application de la même manière que pour les variables PHP classiques..

Voyons comment modifier les variables de session.

Dans le script ci-dessus, nous avons vérifié si le $ _SESSION ['count'] la variable est définie en premier lieu. Si ce n'est pas défini, nous le réglerons à 1, sinon nous allons l'incrémenter de 1. Donc, si vous actualisez cette page plusieurs fois, vous devriez voir que le compteur est incrémenté de un à chaque fois! 

Par ailleurs, si vous souhaitez supprimer une variable de session, vous pouvez utiliser le non fixé fonction, comme indiqué dans l'extrait suivant.

Ainsi, vous ne pouvez plus accéder à la $ _SESSION ['log_in_user_id'] variable comme il est supprimé par le non fixé une fonction. Voilà comment vous pouvez modifier les informations de session.

Comment détruire une session

Dans cette section, nous verrons comment vous pouvez détruire une session. Dans la section précédente, nous avons discuté de la non fixé fonction utilisée si vous souhaitez supprimer des variables de session spécifiques. Par ailleurs, si vous souhaitez supprimer toutes les données liées à la session en même temps, vous pouvez utiliser le session_destroy une fonction.

Essayons de comprendre comment cela fonctionne en utilisant l'exemple suivant.

le session_destroy La fonction supprime tout ce qui est stocké dans la session en cours. Ainsi, vous verrez un blanc $ _SESSION variable des requêtes suivantes, les données de session stockées sur le disque ayant été supprimées par le session_destroy une fonction.

Généralement, vous utiliseriez le session_destroy fonction lorsque l'utilisateur est déconnecté.

Conclusion

Dans cet article, nous avons exploré les bases de la gestion de session en PHP. C'est un concept clé qui vous permet de conserver des informations sur plusieurs pages Web..

Dans la première moitié de l'article, nous avons discuté des concepts de base des sessions, puis nous avons créé quelques exemples PHP pour montrer comment créer et détruire des sessions ainsi que manipuler des variables de session..