#php #jquery #session
#php #jquery #сеанс
Вопрос:
Я загружаю содержимое в div с помощью функции load () jquery и обновляю этот div каждые 15 секунд (он проверяет статус).
По какой-то причине после первой перезагрузки / обновления div данные сеанса теряются.
Точный код, который я использую, очень длинный, поэтому базовая версия того, что я делаю, такова:
load.php
<?php
session_start();
$_SESSION['testvalue'] = "TESTVALUE";
?>
<div id="loaddiv"></div>
<script src="js/jquery.js"></script>
<script>
(function($)
{
$(document).ready(function()
{
$.ajaxSetup(
{
cache: false,
});
var $container = $("#loaddiv");
$container.load("load_test.php");
var refreshId = setInterval(function()
{
$container.load('load_test.php');
}, 10000);
});
})(jQuery);
</script>
load_test.php
<?php
session_start();
echo $_SESSION['testvalue'];
?>
Отлично работает, когда страница загружается изначально и отображает TESTVALUE, однако после обновления div вывода больше нет.
Кто-нибудь сталкивался с этим раньше и знает, что происходит?
//РЕДАКТИРОВАТЬ
Я на один шаг продвинулся к решению этой проблемы:
На главной странице я выбираю некоторые вещи из моей базы данных mysql и помещаю это в сеанс, на подстранице (той, которую загружает jquery load ()) Я сейчас просто выводю значения сеанса.
На подстранице нет абсолютно ничего, кроме этого:
<?php
session_start();
echo $_SESSION['test_one'];
echo $_SESSION['test_two'];
?>
<?php echo session_id(); ?>
Когда jquery load() запускается во второй раз, значения в
$_SESSION['test_one'];
и $_SESSION['test_two'];
меняются … (Он снова запускает запрос mysql и добавляет что-то еще в сеанс)
Значения для сеанса устанавливаются на главной странице, так зачем же при обновлении подстраницы снова запускать запрос mysql на главной странице ?!
Комментарии:
1. Первое, что я бы попробовал, это потерять переменную $container и перейти
$("#loaddiv").load("load_test.php")
к вашим вызовам load.2. «потеряно»? Вы проверяли
session_id()
, возвращает ли один и тот же идентификатор для обоих запросов? Если это изменится, значит, у вас проблема с настройкой файлов cookie сеанса, и вы получаете разные сеансы для каждого запроса.3. Другой способ отладки — использовать консоль браузера и проверить связь. Ищите файлы cookie сеанса.
4. может быть, ваша проблема как-то связана с необходимостью перезагрузки dom, чтобы вернуть его в исходное состояние с точки зрения функциональности.
5. Firebug показывает, что идентификатор сеанса тот же, при первой загрузке
Cookie PHPSESSID=43480464d84a90ec77c166e43921194d;
при любом обновленииCookie PHPSESSID=43480464d84a90ec77c166e43921194d;
, но переменные исчезли.