Maison >développement back-end >Problème PHP >Comment définir la durée d'une session PHP

Comment définir la durée d'une session PHP

藏色散人
藏色散人original
2021-03-29 09:42:342262parcourir

Comment définir la durée de la session php : ouvrez d'abord php.ini et recherchez la section Paramètres de session ; puis définissez le cycle de vie de la session en définissant "session.gc_maxlifetime".

Comment définir la durée d'une session PHP

L'environnement d'exploitation de cet article : système Windows7, version PHP7.1, ordinateur DELL G3

session de paramètres php (expirée , invalide, Période de validité)

Il existe de nombreux aspects de la configuration d'une session en php, notamment la définition des valeurs de la session ou la définition directe de la période d'expiration, d'invalidation et de validité. Ci-dessous, je vais vous présenter. comment l'utiliser.

Voyons d'abord comment définir la session dans php.ini. Ouvrez php.ini et recherchez l'élément suivant dans la section Paramètres de session :

.

   session.save_path = 
         "N;/path"
        
 
         session.save_path = 
         "C:/Temp"
           #此处以你自己设定的路径为准

Ce paramètre nous permet d'effectuer un hachage multi-niveaux sur le répertoire de stockage de la session, où "N" représente le niveau de répertoire à définir, et le "/path" suivant représente le chemin du répertoire racine où le fichier de session est stocké. Par exemple, nous le définissons au format suivant, et le code est le suivant :

 session.save_path = 
         "2;C:/Temp"

Le paramètre ci-dessus signifie que nous stockons le php. fichier de session dans deux niveaux de répertoires, chaque niveau de répertoire est 0-9 et un total de 36 caractères alphanumériques a-z sont utilisés comme noms de répertoire de cette manière, le répertoire dans lequel les sessions peuvent être stockées peut atteindre 36*36, avec un total. de 1332 dossiers. Je pense que cela est suffisant pour un seul serveur. Si vous parlez de la conception de votre architecture système. Pour partager les données de session entre plusieurs serveurs, le niveau du répertoire peut être augmenté à 3 niveaux ou plus.

Paramètre du délai d'expiration de la session

Continuer le sujet Session en PHP En PHP, le cycle de vie de la session est principalement défini en définissant session.gc_maxlifetime, comme le. code suivant :

       <?php 
        
 
         ini_set
         (
         &#39;session.gc_maxlifetime&#39;
         , 3600); 
         //设置时间 
        
 
         ini_get
         (
         &#39;session.gc_maxlifetime&#39;
         );
         //得到ini中设定值 
        
 
         ?>

[Apprentissage recommandé : Tutoriel vidéo PHP]

Ce qui suit fournit une fonction packagée par d'autres, mais je n'ai pas testé il, uniquement Pour référence, le code est le suivant :

       <?php 
        
 
         function 
          start_session(
         $expire 
          = 0) 
        
 
         { 
        
 
          
         if 
          (
         $expire 
          == 0) { 
        
 
          
         $expire 
          = 
         ini_get
         (
         &#39;session.gc_maxlifetime&#39;
         ); 
        
 
          
         } 
         else 
          { 
        
 
          
         ini_set
         (
         &#39;session.gc_maxlifetime&#39;
         , 
         $expire
         ); 
        
 
          
         } 
        
 
          
         if 
          (emptyempty(
         $_COOKIE
         [
         &#39;PHPSESSID&#39;
         ])) { 
        
 
          
         session_set_cookie_params(
         $expire
         ); 
        
 
          
         session_start(); 
        
 
          
         } 
         else 
          { 
        
 
          
         session_start(); 
        
 
          
         setcookie(
         &#39;PHPSESSID&#39;
         , session_id(), time() + 
         $expire
         ); 
        
 
          
         } 
        
 
         } 
        
 
         ?>

Utilisation :

Ajouter start_session(600 //Expire après 600); secondes.

Comment la session n'expire jamais

Ouvrez le fichier de paramètres php.ini et modifiez les trois lignes comme suit :

1. session.use_cookies

Modifiez ceci. La valeur est définie sur 1, en utilisant les cookies pour transmettre l'ID de session

2 session.cookie_lifetime

Cela représente l'heure à laquelle l'ID de session est stocké dans le cookie client. le SessionID sera invalidé dès que le navigateur le fermera ...C'est pour cette raison que les sessions PHP ne peuvent pas être utilisées en permanence ! Alors fixons-le à un nombre que nous pensons grand, que diriez-vous de 999999999, ce n'est pas grave ! c'est tout.

3. session.gc_maxlifetime

C'est l'heure à laquelle les données de session sont stockées côté serveur. Si cette durée est dépassée, les données de session seront automatiquement supprimées ! Alors définissons-le également sur 99999999.

C'est tout, tout va bien. Bien sûr, si vous n'y croyez pas, testez-le et voyez - organisez une session et revenez après 10 jours et demi pour voir si votre ordinateur ne fonctionne pas. éteint ou éteint, vous pouvez toujours voir l'ID de session.

Bien sûr, il est également possible que vous n'ayez pas l'autorité pour contrôler le serveur et que vous n'ayez pas la chance de modifier les paramètres du php.ini comme moi. Nous avons un moyen de compter sur nous-mêmes. , nous devons utiliser le client pour stocker les cookies, n'est-ce pas ? L'ID de session obtenu est stocké dans le cookie du client, définit la valeur de ce cookie, puis transmet cette valeur à la fonction session_id(). >

         <?php 
        
 
         session_start(); 
         // 启动Session 
        
 
         $_SESSION
         [
         &#39;count&#39;
         ]; 
         // 注册Session变量Count 
        
 
         isset(
         $PHPSESSID
         )?session_id(
         $PHPSESSID
         ):
         $PHPSESSID 
          = session_id(); 
        
 
         // 如果设置了$PHPSESSID,就将SessionID赋值为$PHPSESSID,否则生成SessionID 
        
 
         $_SESSION
         [
         &#39;count&#39;
         ]++; 
         // 变量count加1 
        
 
         setcookie(
         &#39;PHPSESSID&#39;
         , 
         $PHPSESSID
         , time()+3156000); 
         // 储存SessionID到Cookie中 
        
 
         echo 
          $count
         ; 
         // 显示Session变量count的值 
        
 
         ?>

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