Maison > développement back-end > tutoriel php > Comment puis-je implémenter de manière fiable une expiration de session PHP de 30 minutes ?

Comment puis-je implémenter de manière fiable une expiration de session PHP de 30 minutes ?

DDD
Libérer: 2024-12-20 11:41:08
original
756 Les gens l'ont consulté

How Can I Reliably Implement a 30-Minute PHP Session Expiration?

Implémentation d'une expiration de session PHP après 30 minutes

Énoncé du problème :

Maintenir une session active pendant 30 minutes avant de terminer

Réponse :

Se fier uniquement aux paramètres de session intégrés de PHP (par exemple, session.gc_maxlifetime, session.cookie_lifetime) ne peut pas garantir une expiration fiable de la session. Au lieu de cela, il est recommandé de mettre en œuvre un mécanisme d'expiration personnalisé.

session.gc_maxlifetime :

  • Détermine l'intervalle après lequel les données de session sont considérées comme des « déchets » et soumises pour le nettoyage.
  • Cependant, il n'est pas garanti que le garbage collector s'exécutera à chaque démarrage d'une session, ce qui entraînera des retards potentiels dans les données. suppression.
  • De plus, avec le gestionnaire de session par défaut, les données de session peuvent être supprimées en fonction des horodatages de modification des fichiers, ce qui entraîne des incohérences.

session.cookie_lifetime :

  • Contrôle l'expiration du cookie de session du navigateur, mais n'influence pas directement la session côté serveur validité.
  • Définir cette valeur sur zéro créerait un véritable cookie de session, expirant à la fermeture du navigateur.

Gestionnaire d'expiration personnalisé :

Pour garantir une expiration de session fiable, implémentez un gestionnaire d'expiration personnalisé qui utilise un horodatage pour suivre l'utilisateur activité.

Code :

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
    // Session inactive for over 30 minutes
    session_unset(); // Delete session data
    session_destroy(); // Terminate session
}
$_SESSION['LAST_ACTIVITY'] = time(); // Update timestamp
Copier après la connexion

Considérations supplémentaires :

  • Définissez session.gc_maxlifetime sur une valeur égal ou supérieur à l'intervalle d'expiration personnalisé (par exemple, 1 800 secondes).
  • Pour expirer la session en fonction du temps d'activité (plutôt que de l'heure de début), utilisez setcookie() pour définir l'expiration du cookie 30 minutes après la dernière demande.

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!

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