En PHP, la session est un mécanisme commun pour réaliser des fonctions telles que l'identification de l'identité de l'utilisateur et la rétention des données. Par défaut, le cycle de vie et le temps d'expiration de la session sont contrôlés par le fichier de configuration du serveur (tels que php.ini ), mais nous pouvons également personnaliser le cycle de vie de la session via les paramètres pertinents avant session_start () .
Cet article expliquera en détail comment définir le cycle de vie et le temps d'expiration de la session via session_start () , ainsi que des précautions connexes.
Le cycle de vie de session se compose de deux parties:
Temps d'expiration des cookies du client : si l'ID de session est toujours conservé après la fermeture du navigateur.
Le temps de stockage des données de session du serveur : c'est-à-dire le cycle de survie des données de session stockées sur le serveur.
Les deux doivent être correctement configurés pour atteindre le cycle de vie de la session que vous attendez.
Avant d'appeler session_start () , vous pouvez définir le cycle de vie de la session à l'aide des deux fonctions suivantes:
session_set_cookie_params () : définit le temps d'expiration du cookie client.
ini_set ('session.gc_maxlifetime', secondes) : définissez le temps de survie maximal des données de session du serveur.
Voici un exemple de définition du cycle de vie de session à 1 heure (3600 secondes):
<code> & lt ;? php // Définissez le cycle de vie de la session côté serveur sur 1 heure ini_set ('session.gc_maxlifetime', 3600); // Définit le cycle de vie du client sur 1 heure
session_set_cookie_params ([
'Lifetime' => 3600,
'path' => '/',
'domaine' => 'm66.net',
'sécurisé' => true, // Envoyez des cookies uniquement sous HTTPS (activé au besoin)
'httponly' => true, // Désactiver JS pour accéder aux cookies pour améliorer la sécurité
'samesite' => 'lax' // empêcher les attaques CSRF, les valeurs facultatives: lax, stricte, aucune
]));
// Démarrer la session
session_start ();
// définir une variable de session
$ _Session ['user_id'] = 1234;
?>
</code>
session.gc_maxlifetime : contrôle l'heure à laquelle le serveur conserve les données de session. La valeur par défaut est généralement de 1440 secondes (24 minutes).
Le paramètre à vie de session_set_cookie_params () détermine le temps d'expiration du cookie client. S'il est 0, cela signifie "le navigateur est fermé et non valide".
Même si GC_MaxlifeTime est défini, le mécanisme de collecte des ordures de PHP n'efface pas la session expirée à chaque fois qu'elle demande. La probabilité de compensation est déterminée par les éléments de configuration suivants:
session.gc_probability = 1
session.gc_divisor = 100
Indique qu'il y a 1% de chances d'effectuer un nettoyage de session. Peut être ajusté au besoin.
Si vous exécutez plusieurs sous-domaines (tels que api.m66.net , admin.m66.net ), il est recommandé de définir le domaine sur .m66.net pour atteindre la session de partage de subdomaine croisée.
Lorsque vous utilisez HTTPS, assurez-vous de définir des paramètres sécurisés et httponly pour améliorer la sécurité de la session.
Nettoyez régulièrement les fichiers de session expirés pour éviter de s'accumuler et d'occuper l'espace du serveur.
En configurant rationnellement session_set_cookie_params et ses session.gc_maxlifetime , nous pouvons contrôler de manière flexible le cycle de vie de la session PHP et gérer l'état de l'utilisateur plus solidement et efficacement. La fabrication de ces paramètres avant d'appeler session_start () est une étape clé dans la mise en œuvre du comportement de session personnalisé.