La nécessité de maintenir une session active pendant une heure spécifique, puis d'y mettre fin est courant dans le développement Web. PHP propose des options pour définir les délais d'expiration des sessions, mais elles ne donnent pas toujours des résultats fiables. Comprenons les lacunes des mécanismes PHP existants et explorons une solution fiable.
PHP propose deux options pour définir la session. timeouts :
Pour établir un délai d'expiration de la session, implémentez votre propre solution. Ceci peut être réalisé en conservant un horodatage représentant la dernière activité de l'utilisateur.
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) { // Last request was more than 30 minutes ago session_unset(); // Unset $_SESSION variable session_destroy(); // Destroy session data in storage } $_SESSION['LAST_ACTIVITY'] = time(); // Update last activity timestamp
Comme la mise à jour des données de session à chaque requête modifie la date de modification du fichier de session , le garbage collector ne supprimera pas prématurément la session.
Pour plus de sécurité, pensez à régénérer périodiquement l'ID de session pour atténuer la session tentatives de piratage :
if (!isset($_SESSION['CREATED'])) { $_SESSION['CREATED'] = time(); } else if (time() - $_SESSION['CREATED'] > 1800) { // Session started more than 30 minutes ago session_regenerate_id(true); // Change session ID and invalidate old one $_SESSION['CREATED'] = time(); // Update creation time }
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!