Explication détaillée de la façon de configurer une session avec un délai d'expiration strict en PHP

墨辰丷
Libérer: 2023-03-27 14:26:02
original
2440 Les gens l'ont consulté

Cet article présente principalement la méthode de mise en place d'une session en PHP qui contrôle strictement le délai d'expiration, qui a une bonne valeur de référence. Jetons un coup d'oeil avec l'éditeur ci-dessous

Période de validité de la session 1.php

La période de validité de la session PHP est par défaut 1440 secondes ( 24 minutes), Si le client ne s'actualise pas pendant plus de 24 minutes, la session en cours sera recyclée et invalide.

Lorsque l'utilisateur ferme le navigateur, la session se termine et la session deviendra également invalide.

Vous pouvez modifier le session.gc_maxlifetime de php.ini pour définir le cycle de vie de la session, mais il n'y a aucune garantie que les informations de la session seront supprimées immédiatement après ce temps est dépassé. Étant donné que le GC est démarré sur la base d'une probabilité, il se peut qu'il ne démarre pas avant longtemps. Ensuite, un grand nombre de sessions sont encore valides après avoir dépassé session.gc_maxlifetime.

2.session.gc_maxlifetime, session.gc_probability, session.gc_pisor description

session.gc_maxlifetime = 30 signifie lorsque le fichier de session est dans 30 secondes S'il n'est pas consulté plus tard, il est considéré comme une session expirée et est en attente de recyclage GC.

La probabilité d'appel du processus GC est calculée via session.gc_probability/session.gc_pisor, et session.gc_pisor est par défaut de 1000,

Si session.gc_probability = 1000, alors le processus GC l'appellera à chaque fois que session_start() est exécuté pour effectuer le recyclage.

Augmenter la probabilité de session.gc_probability/session.gc_pisor aidera, mais cela aura un impact sérieux sur les performances.

3. Contrôlez strictement la méthode d'expiration de la session

1 Utilisez memcache/Redis pour enregistrer la session et définir l'heure d'expiration, car le mécanisme de recyclage de. memcache/redis n'est pas Selon la probabilité, il peut garantir que la session expirera après l'expiration.

2. Utilisez uniquement PHP pour l'implémenter, créez une classe de session et écrivez l'heure d'expiration lorsque la session est écrite. Lors de la lecture, déterminez s'il a expiré en fonction du délai d'expiration.

<?php
/**
 * Session控制类
 */
class Session{
  /**
   * 设置session
   * @param String $name  session name
   * @param Mixed $data  session data
   * @param Int  $expire 超时时间(秒)
   */
  public static function set($name, $data, $expire=600){
    $session_data = array();
    $session_data[&#39;data&#39;] = $data;
    $session_data[&#39;expire&#39;] = time()+$expire;
    $_SESSION[$name] = $session_data;
  }
  /**
   * 读取session
   * @param String $name session name
   * @return Mixed
   */
  public static function get($name){
    if(isset($_SESSION[$name])){
      if($_SESSION[$name][&#39;expire&#39;]>time()){
        return $_SESSION[$name][&#39;data&#39;];
      }else{
        self::clear($name);
      }
    }
    return false;
  }
  /**
   * 清除session
   * @param String $name session name
   */
  private static function clear($name){
    unset($_SESSION[$name]);
  }
}
?>
Copier après la connexion

démo :

<?php
session_start();
$data = &#39;123456&#39;;
session::set(&#39;test&#39;, $data, 10);
echo session::get(&#39;test&#39;); // 未过期,输出
sleep(10);
echo session::get(&#39;test&#39;); // 已过期
?>
Copier après la connexion

Recommandations associées :

délai d'expiration de session en phpcontrôle strictTutoriel Exemple_PHP

php contrôle strict Délai d'expiration de la session_Tutoriel PHP

php Contrôle strictDélai d'expiration de la session_Tutoriel PHP_Technologie de programmation

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!