Старые данные в переменных сессии php, почему не обновляются?
Здравствуйте, имеются проблемы с переменными сессии php.
Структура следующая:
- conn.php (подключение к БД и глобальные переменные);
- index.php (форма с вводом данных POST, и перенос данных в переменные сессии или удаление файлов из сессии);
- page1.php;
- page2.php;
- page3.php.
На страницах page1-3 вывожу данные из БД на основании данных пользователя из сессии. Но выглядит сейчас так, что после того как я прошелся по все страницах как Пользователь1, после чего вылогинился и вошел как Пользователь2, но на страницах page2 и page3 выводятся старые данные Пользовтеля1, в сессии хранятся его данные, и обновляются только после обновления страницы.
На страницах page1-3 пользуюсь данными из сессии $user=$_SESSION["user"];
При выходе из системы удаляю данные сессии (переменные и сессию), пытался уже максимально все очистить:
При логине создаю новую сессию:
session_start();
session_regenerate_id(true);
со всем этим при выходе из аккаунта , на странице index.php (перенаправление после выхода) логи показывают что сессия пуста, ничего нет. Но, как и описал проблему, на страницах page данные в сессии старые.
Я понимаю что проблема может быть не только в очистке данных сессии, но и с подключением сессии в файлах? Везде начинаю файл с session_start() и 'require con.php', в require con.php так же подключаю сессию и записываю данные из сессии в переменные. Возможна ли коллизия сессий, или что-то другое – в чем может быть проблема, как их избежать?
FanatPHP, на каждой странице указываю session_start() чтобы воспользоваться переменными из сессии. На остальных страницах все данные из текущей сессии пользователя, все ок, но на page2 и 3 остаются данные другого пользователя.
session_id на проблемных страницах показывает в одном месте id текущей, но в данных пользователя (логи и именем итд, туда тоже добавил id сессии) то там уже старый id. Т е все же несколько сессий на одной странице?
Как в таком случае правильно вызывать сессию, чтобы на всех страницах была одна и та же сессия, и данные были только из нее?
ну где здесь "несколько сессий на одной странице" если строчкой выше написано что на старой странице сессия одна, но старая?
наверняка что-то нахимичено с path
как РНР ставит куку с сессией? Сюда надо скопировать полностью заголовок.
FanatPHP,
<?
header('Cache-Control: no cache');
session_cache_limiter('private_no_expire');
session_start();
Может быть нахимичено, с php знаком еще слабо . Вот и пытаюсь разобраться.
Заголовок и cache limiter в начале указываю чтобы при обновлении страницы не появлялось сообщения браузера "отправить данные/запрос снова".
Под "несколько сессий" имел ввиду: вначале мне показывает id сессии текущей, но уже на самой странице показывает данные старого пользователя с id сессии того пользователя получается.
На странице высвечиваются данные пользователя, на котором я первый раз заполнил форму на этой странице
- зашел как Пользователь1, потом вылогинился и зашел как Пользователь2 - именно на page2 и 3 показывает данные Пользователя1. Выхожу из системы и захожу как Пользователь3 - все равно показывает данные Пользователь1.
Cookie: PHPSESSID=tqgahte41vt7nr8pnr6te27bu7v8v71m
ну по идее здесь все как надо.
странно это всё.
а если страницу со старыми данными перезагрузить по ctrl-f5?
Какого надо, текущего - после обновления страницы в тех переменных сидят уже не старые данные (как из примера Пользователь1), а того на котором залогинены сейчас