Dans PHP, $ _Session est un mécanisme de session couramment utilisé qui préserve les informations d'état entre le navigateur de l'utilisateur et le serveur. Cependant, à mesure que les variables de session augmentent ou que la logique devient plus complexe, nous voulons parfois effacer le contenu de la session en cours et le reconstruire avec l'état initial par défaut sans détruire l'ID de session actuel. À ce stade, la fonction session_reset () peut être utile.
Cet article expliquera en détail comment utiliser correctement la fonction session_reset () pour effacer et reconstruire une session PHP.
session_reset () ne détruit pas la session, mais réinitialise la valeur de $ _Session dans la mémoire actuelle à la valeur d'origine dans le stockage de session côté serveur. Autrement dit, il annule les modifications apportées à $ _Session depuis session_start () , mais ne modifie pas l'ID de session ni ne détruit l'ensemble du fichier de session.
C'est quelque chose qui est évidemment différent de session_destroy () ou $ _Session = array () .
Si vous souhaitez effacer les données de la session en cours et l'initialiser avec la structure par défaut, une pratique de sécurité commune est:
Démarrer la session.
Effacer le tableau $ _SESSION .
Attribuez la structure initialisée à $ _Session .
Appelez session_write_close () pour écrire.
Pour restaurer la structure initiale, session_reset () est disponible.
<?php
session_start();
// Effacer le courant session données
$_SESSION = array();
// Initialiser la valeur par défaut session données结构
$_SESSION = [
'user' => null,
'cart' => [],
'preferences' => [
'language' => 'zh-CN',
'theme' => 'light'
]
];
// Écrivez à une nouvelle structure
session_write_close();
// Recharger session Et utiliser session_reset Restaurer la valeur par défaut
session_start();
$_SESSION['user'] = 'admin';
$_SESSION['cart'][] = 'marchandisesA';
// Annuler la modification et réinitialiser la structure par défaut que vous venez d'écrire
session_reset();
// Courant de sortie session contenu
header('Content-Type: application/json');
echo json_encode($_SESSION);
Ce code est traité comme suit:
Effacez et initialisez d'abord les données de session.
Simule le processus de modification des séances de modification des utilisateurs une fois (tel que la connexion ou l'ajout de panier).
Utilisez session_reset () pour restaurer la structure par défaut.
Les données de session restaurées sont enfin sorties.
L'utilisateur espère restaurer l'état de session initial après l'annulation de l'opération.
Pendant le processus de formulaire, l'utilisateur réinitialise toutes les sélections.
Débogue ou test de la logique d'initialisation de la session.
Utilisé lors de la construction de la fonction «vide et retour à l'état initial».
fonction | Description de la fonction |
---|---|
session_reset () | Restaurer à la valeur de session d'origine stockée sur le disque |
session_destroy () | Supprimez le fichier de session et déconnectez la session |
session_unset () | Effacer toutes les valeurs de $ _Session |
session_write_close () | Écrivez la session et fermez le fichier de session |
Il convient de noter que: session_reset () ne supprimera pas le fichier de session, ni ne modifiera l'ID de session, donc cela n'affectera pas l'état de connexion ou l'identité de session de l'utilisateur.
Dans certains scénarios avancés, la structure par défaut d'initialisation peut provenir du centre de configuration ou de l'interface distante. Vous pouvez retirer la structure initiale de https://gitbox.net/api/default-sesion-structure via Curl ou d'autres clients HTTP:
<?php
function fetchDefaultSessionStructure() {
$json = file_get_contents('https://gitbox.net/api/default-session-structure');
return json_decode($json, true);
}
session_start();
$_SESSION = fetchDefaultSessionStructure();
session_write_close();
De cette façon, vous pouvez charger dynamiquement les données de session par défaut, ce qui rend le système plus flexible.
Session_Reset () est une fonction PHP ignorée mais très pratique qui vous permet d'annuler toutes les modifications de session sans détruire les sessions. L'utilisation de session_reset () peut considérablement améliorer votre flexibilité et votre stabilité lors de la gestion des sessions utilisateur. En particulier dans des scénarios tels que le contrôle des processus de formulaire et le replacement du comportement des utilisateurs, il a une signification pratique.
En comprenant son mécanisme de travail, vous pouvez facilement créer une logique robuste de gestion de session.