Maison >développement back-end >tutoriel php >Comment faire expirer une session PHP après 30 minutes d'inactivité ?

Comment faire expirer une session PHP après 30 minutes d'inactivité ?

DDD
DDDoriginal
2024-12-20 03:29:13221parcourir

How to Make a PHP Session Expire After 30 Minutes of Inactivity?

Expire la session PHP après 30 minutes

Question :
Comment puis-je créer une session PHP qui expire après 30 minutes ?

Réponse :

Méthode : implémenter un délai d'expiration de session personnalisé

Les méthodes d'expiration de session intégrées de PHP, telles que session.gc_maxlifetime et session.cookie_lifetime ne sont pas fiables en raison de divers facteurs. Au lieu de cela, implémentez votre propre délai d'attente en utilisant :

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
  session_unset();
  session_destroy();
}
$_SESSION['LAST_ACTIVITY'] = time();

Ce code met à jour l'horodatage de la session à chaque demande, gardant le fichier de session actif et empêchant une suppression prématurée par le ramasse-miettes.

Sécurité supplémentaire :

Pour vous protéger contre le piratage de session, régénérez l'ID de session périodiquement :

if (!isset($_SESSION['CREATED'])) {
  $_SESSION['CREATED'] = time();
} else if (time() - $_SESSION['CREATED'] > 1800) {
  session_regenerate_id(true);
  $_SESSION['CREATED'] = time();
}

Remarques :

  • Définissez session.gc_maxlifetime pour qu'il soit au moins égal au délai d'expiration personnalisé (1 800 dans cet exemple).
  • Pour expirer la session après 30 minutes d'activité, utilisez setcookie avec une heure d'expiration time() 60*30.

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