La gestion de session est un concept très important en PHP, qui permet aux informations utilisateur de rester inchangées sur toutes les pages d'un site Web ou d'une application.
Qu'est-ce qu'une session en PHP ?
Une session est un mécanisme permettant de conserver des informations sur différentes pages Web afin d'identifier les utilisateurs lorsqu'ils parcourent un site Web ou une application.
Tout le monde doit se poser cette question : Pourquoi le site Web a-t-il besoin de sessions ? Avant d’aborder cette question, nous devons revenir en arrière et examiner le fonctionnement du protocole HTTP.
Le protocole HTTP est un protocole sans état, ce qui signifie que le serveur ne peut pas se souvenir d'un utilisateur spécifique entre les requêtes. Par exemple, lorsque vous visitez une page Web, le serveur est uniquement responsable de servir le contenu de la page demandée. Ainsi, lorsque vous visitez d’autres pages du même site Web, le serveur Web interprète chaque requête individuellement comme si elles n’avaient rien à voir les unes avec les autres. Le serveur n'a aucun moyen de savoir que chaque demande provient du même utilisateur.
(Tutoriel vidéo d'apprentissage gratuit : Tutoriel vidéo php)
La figure suivante décrit brièvement le protocole HTTP.
Dans ce processus, si vous souhaitez afficher les informations d'un utilisateur spécifique, vous devez authentifier l'utilisateur dans chaque demande. Imaginez si à chaque fois que vous faites une demande, vous devez saisir votre nom d'utilisateur et votre mot de passe sur la page pour vous authentifier, c'est trop fastidieux et pas pratique du tout. Cependant, la séance s'avère utile à ce moment-là.
Une session permet de maintenir l'état en permettant aux utilisateurs de partager des informations sur différentes pages d'un même site ou d'une seule application. Cela permet au serveur de savoir que toutes les demandes proviennent du même utilisateur, permettant au site d'afficher des informations et des préférences spécifiques à l'utilisateur.
Le schéma ci-dessous décrit comment le protocole HTTP est utilisé avec les sessions.
Comment PHP gère-t-il les sessions ?
1. Démarrez la session
Chaque fois que vous souhaitez traiter des variables de session, vous devez vous assurer que la session a été démarrée. Il existe plusieurs façons de démarrer une session en PHP.
1), utilisez la fonction session_start
Il s'agit de la méthode la plus courante, dans laquelle la session est démarrée par la fonction session_start.
Il est important que la fonction session_start soit appelée au début du script avant qu'une sortie ne soit envoyée au navigateur. Sinon, vous rencontrerez la fameuse erreur Les en-têtes sont déjà envoyés.
2), Démarrer automatiquement la session
Si vous devez utiliser la session tout au long de l'application, vous pouvez également choisir de démarrer automatiquement la session sans utiliser la fonction session_start.
Il y a une option de configuration session.auto_start dans le fichier php.ini qui nous permet de démarrer automatiquement une session pour chaque requête. Par défaut, il est défini sur 0, nous pouvons le définir sur 1 pour activer la fonction de démarrage automatique.
2. Obtenez l'ID de session
Le serveur crée un identifiant unique pour chaque nouvelle session. Si vous souhaitez obtenir l'ID de session, vous pouvez utiliser la fonction session_id comme indiqué dans l'extrait suivant.
Cela devrait vous donner l'ID de session actuelle. La fonction session_id est intéressante car elle peut également prendre un paramètre : 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 paramètre de la fonction session_id.
Il est important de noter que lorsque vous souhaitez démarrer une session avec un ID de session personnalisé, la fonction session_id doit être appelée avant session_start.
3. Créer des variables de session
Une fois la session démarrée, $_SESSION initialisera le tableau super-global avec les informations de session correspondantes. Par défaut, il est initialisé avec un tableau vide, vous pouvez utiliser des paires clé-valeur pour stocker plus d'informations.
Voyons comment initialiser les variables de session à travers des exemples de code.
Comme indiqué ci-dessus, nous utilisons la fonction session_start pour démarrer une session au début du script ; après cela, nous initialisons plusieurs variables de session ; _SESSION super globale pour accéder à ces variables.
Lorsque vous utilisez le superglobal $_SESSION pour stocker des données dans une session, elles sont finalement stockées dans le fichier de session correspondant sur le serveur qui est créé au démarrage de la session. De cette façon, les données de session sont partagées entre plusieurs requêtes.
Comme nous en avons discuté, les informations de session sont partagées entre les requêtes, de sorte que les variables de session initialisées sur une page seront également accessibles depuis d'autres pages jusqu'à l'expiration de la session. Normalement, la session expire à la fermeture du navigateur.
4. Modifier et supprimer des variables de session
Nous pouvons modifier ou supprimer des variables de session précédemment créées dans l'application, tout comme nous modifions des variables PHP classiques.
Prenons un exemple pour voir comment modifier les variables de session.
Dans le script ci-dessus, nous vérifions d'abord si la variable $_session['count'] est définie. S'il n'est pas défini, nous le mettrons à 1, sinon nous l'incrémenterons de 1. Ainsi, si vous actualisez cette page plusieurs fois, vous pourrez voir le compteur s'incrémenter de un à chaque fois !
En revanche, si vous souhaitez supprimer la variable de session, vous pouvez utiliser la fonction unset, comme indiqué dans l'extrait suivant :
Dans de cette façon, nous ne pouvons plus accéder à la variable $_SESSION['logged_in_user_id']. Parce qu'il a été supprimé par la fonction unset.
5. Détruisez la session
Nous savons ci-dessus que nous pouvons utiliser la fonction unset pour supprimer des variables de session spécifiques, alors que devons-nous faire si nous voulons supprimer toutes les données liées à la session en même temps ; ?
C'est en fait très simple, on peut utiliser la fonction session_destroy.
Voyons comment fonctionne la fonction session_destroy.
Description : La fonction session_destroy supprime tout le contenu stocké dans la session en cours. Par conséquent, lorsque les données de session stockées sur le disque sont supprimées par la fonction session_destroy, nous verrons une variable de session vide des requêtes suivantes.
Remarque : Habituellement, la fonction session_destroy n'est utilisée que lorsque l'utilisateur se déconnecte
Tutoriels d'articles connexes recommandés : Tutoriel php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!