Сеанс PhP не обновляется с использованием AJAX

Я искал высокий и низкий для ответа на этот вопрос. У меня есть сайт, который воспроизводит длинные видеофайлы. Я не хочу, чтобы пользователь заходил во время просмотра видео, поэтому я хотел поставить вызов AJAX на таймер, который обновляет сеанс. Мне говорили многие, что делать что-либо с сеансом на странице обновления будет достаточно, но ничего не работает. У меня истекает срок действия php-сессии до 30 минут. Я бы больше не хотел этого больше.

Вот мой вызов 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); 

Вызов AJAX работает отлично и петли правильно. Вот файл refreshSession.php, который мне нужно сохранить в сеансе.

 <?php include_once("configure.php"); // store session data if (isset($_SESSION['userData']['userID'])) $_SESSION['userData']['userID'] = $_SESSION['userData']['userID']; // or if you have any algo. ?> 

Обратите внимание, что файл configure.php вызывает session_start (); Я писал в файл идентификатор сеанса и другую информацию, и была написана правильная информация. Поэтому я знаю, что этот файл php читает переменные сеанса.

Однако через 30 минут я выхожу из системы, и сеанс сбрасывается. Есть что-то, что мне не хватает?

Related of "Сеанс PhP не обновляется с использованием AJAX"

Не знаю, было ли у вас решение этой проблемы, однако я тоже столкнулся с этой проблемой и смог ее решить, обновив время истечения срока действия cookie сеанса.

Вам нужно понять, что сеансы поддерживаются на основе файла cookie, установленного сервером. Когда ваша основная страница загружается, заголовок ответа устанавливает cookie с датой истечения срока действия. Чтобы увеличить время истечения срока действия вашей сессии, это время истечения срока действия cookie должно быть увеличено.

Set-Cookie: PHPSESSID = xxxxxxxxxxxxxxx; expires = Thu, 04-Aug-2016 10:22:20 GMT; Max-Age = 900;

Поэтому вам нужно обновить cookie сеанса с расширенным временем истечения срока действия. используйте setcookie (), чтобы выполнить это.

 <?php session_start(); setcookie("PHPSESSID", session_id(), time() + ini_get("session.cookie_lifetime")); include_once("configure.php"); 

Вы также можете использовать session_regenerate_id (). Это приведет к обновлению идентификатора сеанса, а также времени истечения срока действия. Это также предотвратит захват сеанса и фиксацию сеанса.

Эта:

 <?php include_once("configure.php"); 

Должно быть:

 <?php session_start(); //This line is missing include_once("configure.php");