La session PhP ne s’actualise pas avec AJAX

J’ai cherché haut et bas une réponse à cette question. J’ai un site qui lit de longs fichiers vidéo. Je ne souhaite pas que l’utilisateur expire lors du visionnage d’une vidéo. Je souhaitais donc mettre un appel AJAX sur une timer qui actualise la session. Beaucoup m’ont dit que faire n’importe quoi avec la session sur la page d’actualisation serait suffisant, mais que rien ne fonctionne. J’ai la session php expire fixée à 30 minutes. Je préférerais ne plus augmenter cela.

Voici mon appel jQuery / AJAX

//var time = 20000; // for live var time = 10000; // for testing // loop to handle refresh session setInterval(function() { // ajax call to get image $.ajax({ url: 'refreshSession.php', cache: false, async: false, type: "POST", data: {}, success: function(){}, error: function(request, status, error){ alert('Login Session Error: ' + request.responseText + ' STATUS: ' + status + ' ERROR: '+error); } }); }, time); 

L’appel AJAX fonctionne très bien et se boucle correctement. Voici le fichier refreshSession.php dont j’ai besoin pour garder la session active.

  

Notez que le fichier configure.php appelle le session_start (); J’écrivais dans un fichier l’identifiant de session et d’autres informations et les informations correctes étaient en cours d’écriture. Donc, je sais que ce fichier php lit les variables de session.

Cependant, après 30 minutes, je suis déconnecté et la session est réinitialisée. Y a-t-il quelque chose qui me manque?

Je ne sais pas si vous avez eu la solution à ce problème, mais je faisais également face à ce problème et j’ai pu le résoudre en mettant à jour l’heure d’expiration du cookie de session.

Vous devez comprendre que les sessions sont conservées en fonction du cookie défini par le serveur. Lorsque votre page principale est chargée, l’en-tête de réponse définit un cookie avec une date d’expiration. Afin d’augmenter le délai d’expiration de votre session, ce délai d’expiration du cookie doit être augmenté.

Set-Cookie: PHPSESSID = xxxxxxxxxxxxxxxx; expire = jeu, 04-août-2016 10:22:20 GMT; Max-Age = 900;

Vous devez donc mettre à jour le cookie de session avec un délai d’expiration prolongé. utilisez setcookie () pour accomplir cela.

  

Vous pouvez également utiliser la session_regenerate_id (). Cela permettra de renouveler l'identifiant de session ainsi que le délai d'expiration. Cela empêchera également le détournement de session et la fixation de session.

Ce:

  

Devrait être: