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!