5 votes

Vérifier si une session PHP existe ou a expiré en utilisant AJAX

  1. Comment définir le délai d'expiration de la session php, j'essaie comme ci-dessous, mais je ne pense pas que cela fonctionne.

    ini_set("session.gc_maxlifetime", 600);

  2. Comment savoir si une session php existe ou a expiré en utilisant ajax (javascript) ?

Salutations

9voto

Cfreak Points 10831

Pour l'utilisation n°1 session_set_cookie_params() . Pour expirer après 600 secondes

session_set_cookie_params(600)

(remarque : contrairement à l'habituel setcookie la fonction session_set_cookie_params utilise les secondes que vous voulez qu'il vive, il ne doit pas être time() + 600 ce qui est une erreur courante)

Pour le numéro 2, il suffit de faire un petit script appelé par AJAX :

<?php
session_start()

if( empty($_SESSION['active']) ) {
     print "Expired"
}
else {
     print "Active"
}

?>

Du côté Javascript (en utilisant JQuery)

$.get('path/to/session_check.php', function(data) {
     if( data == "Expired" ) {
         alert("Session expired");
     } else if (data == "Active" ) {
         alert("Session active");
     }
 });

2voto

Matías Points 1550

Quoi Magicien des ombres Le commentaire concernant le maintien de la session en vie à chaque fois que vous effectuez la vérification est vrai.

Mais la solution est très simple. L'astuce consiste à effectuer la requête AJAX à un intervalle plus grand que la durée de vie de la session. Ainsi, si vous établissez un délai d'expiration de la session de 15 minutes, vous pouvez vérifier via AJAX toutes les 16 minutes ou plus.

Pour que ce qui précède fonctionne, le délai d'attente de la session doit être implémenté manuellement. Vous pouvez lire cet utile réponse sur la façon de définir la durée de la session.

J'espère que cela vous aidera ou aidera toute personne qui cherche la même chose !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X