Maison >développement back-end >tutoriel php >Comment gérer la session en PHP ?

Comment gérer la session en PHP ?

青灯夜游
青灯夜游original
2019-02-14 17:40:422891parcourir

La gestion de session est un concept important en PHP, qui permet aux informations utilisateur de rester inchangées sur toutes les pages d'un site Web ou d'une application. L'article suivant vous apprendra les connaissances de base du traitement de session en PHP. J'espère qu'il vous sera utile.

Comment gérer la session en PHP ?

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. [Recommandation du didacticiel vidéo : Tutoriel PHP]

Tout le monde doit avoir une 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.

La figure suivante décrit brièvement le protocole HTTP.

Comment gérer la session en PHP ?

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 aux utilisateurs de partager des informations sur différentes pages d'un même site ou d'une seule application, ce qui permet de maintenir l'état. 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 gérer la session en PHP ?

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.

<?php
// 启动session
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.

session.auto_start = 1

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.

<?php
session_start();
echo session_id();
?>

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.

<?php
session_id(YOUR_SESSION_ID);
session_start();
?>

Il est important de noter que lorsque vous souhaitez démarrer une session avec un identifiant 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.

<?php
// 开启会话
session_start();
 
// 初始化会话变量
$_SESSION[&#39;logged_in_user_id&#39;] = &#39;1&#39;;
$_SESSION[&#39;logged_in_user_name&#39;] = &#39;Tutsplus&#39;;
 
// 访问会话变量
echo $_SESSION[&#39;logged_in_user_id&#39;];
echo $_SESSION[&#39;logged_in_user_name&#39;];
?>

Comme montré 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 enfin, nous utilisons la superglobale $_SESSION 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.

<?php
session_start();
 
if (!isset($_SESSION[&#39;count&#39;]))
{
  $_SESSION[&#39;count&#39;] = 1;
}
else
{
  ++$_SESSION[&#39;count&#39;];
}
 
echo $_SESSION[&#39;count&#39;];
?>

在上面的脚本中,我们首先检查了是否设置了$_session['count']变量。如果没有设置,我们将设置为1,否则我们将增加1。因此,如果多次刷新此页,可以看到计数器每次递增一个!

另一方面,如果想要删除会话变量,可以使用unset函数,如下面的代码段所示:

<?php
// 开启会话
session_start();
 
// 初始化会话变量
$_SESSION[&#39;logged_in_user_id&#39;] = &#39;1&#39;;
 
// 取消设置会话变量
unset($_SESSION[&#39;logged_in_user_id&#39;]);
?>

这样,我们就无法再访问$_SESSION[‘logged_in_user_id’]变量了。因为它已被unset函数删除。

5、销毁会话

在上面我们知道可以使用unset函数来删除特定的会话变量;那么如果要一次删除所有与会话相关的数据,我们要怎么办?

其实很简单,我们可以使用session_destroy函数。

下面我们来看看session_destroy函数是如何工作的。

<?php
//开启会话
session_start();
 
// 假设我们已经在另一个脚本中初始化了几个会话变量
 
// 销毁此会话中的所有内容
session_destroy();
?>

说明:session_destroy函数删除存储在当前会话中的所有内容。因此,当存储在磁盘上的会话数据被session_destroy函数删除时,我们将从后续请求中看到一个空的会话变量。

注:通常,在用户注销时才会使用session_destroy函数。

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn