Définir le délai d'expiration de la session en PHP

Subodh Poudel 30 janvier 2023
  1. Utilisez les fonctions session_unset() et session_destroy() pour définir le délai d’expiration de la session en PHP
  2. Utilisez la fonction unset() pour définir le délai d’expiration de la session en PHP
  3. Utilisez la fonction session_regenerate_id() pour modifier l’ID de session actuel en PHP
Définir le délai d'expiration de la session en PHP

Cet article présentera une méthode pour détruire la session en PHP en utilisant les fonctions session_unset() et session_destroy(). Nous détruirons la session après 30 minutes. Il vérifie l’intervalle de temps entre la dernière activité et l’heure actuelle pour détruire la session.

Nous montrerons également une autre façon de définir le délai d’expiration de la session en PHP en utilisant la fonction unset(). La fonction unset() prend la variable de session comme paramètre. Cette méthode utilise un tableau pour stocker la variable de session.

Nous allons introduire une autre méthode pour invalider l’identifiant de session en cours à l’aide de la fonction session_regenerate_id(). Cette fonction génère un nouvel identifiant de session pour la session en cours en détruisant l’identifiant de session précédent.

Utilisez les fonctions session_unset() et session_destroy() pour définir le délai d’expiration de la session en PHP

Nous pouvons utiliser la fonction session_unset() pour désactiver la variable $_SESSION au moment de l’exécution et utiliser la fonction session_destroy() pour détruire la session du stockage. La fonction time() renvoie l’heure courante. Nous pouvons utiliser la variable $_SESSION pour stocker l’horodatage de la dernière activité. Ainsi, nous pouvons vérifier l’heure en calculant les différences entre la dernière activité et l’heure actuelle. De cette façon, nous vérifions l’intervalle de temps d’une session.

Par exemple, démarrez la session sur le serveur avec la fonction session_start(). Vérifiez si la session a été créée avec la fonction isset(). Utilisez l’opérateur && pour vérifier l’autre condition à l’intérieur de la fonction issset(). Soustrayez la variable de session start de la fonction time() et vérifiez le résultat s’il est supérieur à 1800. Utilisez les session_unset() et session_destroy() à l’intérieur de la condition if. Affichez ensuite le message indiquant que la session a été détruite. En dehors de la condition if, créez une variable de session $_SESSION['start'] et affectez-lui la fonction time() pour mettre à jour la session.

La condition if échoue car la variable de session n’a pas encore été créée dans l’exemple ci-dessous. La session sera créée lorsque la condition échoue. La session expire après 30 minutes si l’utilisateur n’envoie pas la demande au serveur. La dernière partie de la fonction isset() vérifie le temps total actif de la session. 1800 désigne 1800 secondes, ce qui équivaut à 30 minutes. Si la durée totale d’activité dépasse 30 minutes, la condition if sera vraie. Ensuite, il détruit la session. La sortie du code correspond à la destruction de la session après plus de 30 minutes du temps actif. Consultez le Manuel PHP pour en savoir plus sur la fonction session_unset().

Exemple de code :

# php 7.*
<?php
session_start();
if (isset($_SESSION['start']) && (time() - $_SESSION['start'] > 1800)) {
    session_unset(); 
    session_destroy(); 
    echo "session destroyed"; 
}
$_SESSION['start'] = time();
?>

Production:

session destroyed

Utilisez la fonction unset() pour définir le délai d’expiration de la session en PHP

Nous pouvons utiliser la fonction unset() pour détruire la session d’une variable de session particulière en PHP. La fonction prend la variable $_SESSION comme paramètre. Cette méthode stocke la session dans un tableau. Nous pouvons utiliser le tableau associatif pour stocker le nom de la session et l’heure de début de la session. Nous pouvons utiliser la fonction time() pour obtenir l’heure actuelle. Nous pouvons vérifier l’intervalle de temps de session en suivant la méthode mentionnée ci-dessus, en soustrayant le temps de session actif de l’heure actuelle.

Par exemple, utilisez la fonction session_start() pour démarrer la session. Écrivez une variable de session $_SESSION['start'] et affectez-lui un tableau associatif. Écrivez les clés 0 et registered et écrivez les valeurs active et time() pour les clés respectives. Vérifiez si l’intervalle de temps est supérieur à 30 minutes. Si la condition est vraie, écrivez la fonction unset() avec le $_SESSION['start'] comme paramètre. Ensuite, affichez le message session destroyed. En dehors du bloc de condition if, mettez à jour la variable de session $_SESSION['start'] avec la fonction time().

Dans l’exemple ci-dessous, le tableau contient la variable de session. La valeur de la variable de session est active. La fonction time() crée l’horodatage actuel dans le tableau, et la clé registered contient la valeur. Veuillez consulter le Manuel PHP pour en savoir plus sur la variable superglobale $_SESSION.

Exemple de code :

#php 7.x
<?php
session_start();
$_SESSION['start'] = array(0=> 'active', 'registered' => time())
if ((time() - $_SESSION['start']['registered']) > (60 * 30)) {
    unset($_SESSION['start']);
    echo "session destroyed";
}
$_SESSION['start'] = time();
?>

Production:

session destroyed

Utilisez la fonction session_regenerate_id() pour modifier l’ID de session actuel en PHP

Nous pouvons utiliser la fonction session_regenerate_id() pour changer l’identifiant de session de la session en cours. De cette façon, nous pouvons empêcher notre script de fixer la session. La valeur booléenne true dans la fonction permet de générer un nouvel identifiant de session. Dans cette méthode, nous pouvons imprimer l’identifiant de session à l’aide de la fonction session_id() avant et après la régénération de l’identifiant de session. Mais la session n’expire pas avec le changement de session-id. Il demande seulement à l’utilisateur de se reconnecter. Par conséquent, il empêche la fixation de session.

Par exemple, démarrez la session avec la fonction session_id(). Affichez l’identifiant de la session en cours à l’aide de la fonction session_id(). Vérifiez si la session a été créée et créez une session $_SESSION['start'] et affectez la fonction time(). Trouvez l’intervalle de temps pendant lequel la session est active comme nous l’avons fait dans la méthode ci-dessus. Si la condition est vraie, utilisez la fonction session_regenerate_id(true). Mettez à jour la variable de session. A la fin du script, imprimez le nouvel identifiant de session avec la fonction session_id().

Exemple de code :

#php 7.x
<?php
session_start();
print("Old: ".session_id());
echo "<br>";
if (!isset($_SESSION['start'])) {
    $_SESSION['start'] = time();
} else if (time() - $_SESSION['start'] > 1800) {
    session_regenerate_id(true); 
    $_SESSION['start'] = time(); 
}
print("Now: ".session_id());
?>

Production:

​Old: t38kssej37un38mtsoa6lovh05 
Now: mak7i3in708c6rl2udd8gbfo3r ​ ​
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Article connexe - PHP Session