Необходимо воостановить переменные сессии по её ИД, как это можно сделать? пробовал след. способы: PHP: session_id($id); $session = $_SESSION; session_id($this->_id); return $session; Но к сожалению Запись в БД конечно поможет, но серриализация отличается от стандартной, да и не выход это
Пока целью является распечатать информацию о пользователе которая скопилась у него в сесси. А вообще функция getSessionById на мой взгляд в классе управляющим сессиями не помешает, если честно даже не думал что это может быть такой проблемой..
lacost Пока целью является распечатать информацию о пользователе которая скопилась у него в сесси в мертвой сессии или в той, что сейчас живет?
lacost у меня данный вопрос навевает на мысль - получить данные с другой сессии, уже закрытой. для доступа к данным текущей сессии никаких таких манипуляций не требуется. всё доступно в массиве $_SESSION
В той что сейчас живёт конечно. Разве можно что то достать из мёртвых сессий? Можно конечно при загрузке просто серриализовать сессию и сохранить в БД, но по моему это будет лишним, и подойдет только в случае если нужно просматривать мёртвые сессии.
Объясню ещё рас, проблема как мне кажется тривиальна, но уже второй день не могу найти решение.. ИД моей сессии - 1 На сайте находятся активные пользователи с сессиями 2,3,4, и т.д. Я хочу посмотреть что у них твориться в сессиях P.S. Если метод для получения ИД открытых на данный момент сессий? На данный момент ИД открытых сессий пишутся в БД + ГС конечно, что в принцепе приемлемый вариант но думаю не самый лучший Буду признателен за помощь.
lacost зачем это нужно? плохая идея играться с чужими сессиями. если админу нужно посмотреть что хранится в чужих сессиях - нужно данные сессии сохранять в базу данных. это будет оптимальнее, но труднее в реализации. а от сериализации никуда не деться.
А разве session_id очищает файл с сессией, если такой существует? Сомневаюсь, но если да - setcookie в помощь
MiksIr, Совершенно не понял что вы имели в виду. Gromo, Дело в том, что если выбрать способ хранения сессий в БД, то все данные сессии и так будут там. Поэтому создавать ещё 1 похожую таблицу мне кажется немного не целесообразно. единственное что сериализация которая проходит при сохранение сессии в базу отличается от стандартной, есть конечно вариант распарсить самому, но это уже попахивает изобретением велосипеда.
Бляха-муха. а ты сам не можешь извнутри посмотреть? что за бред с лазаньем в "чужую" сессию, если это твой сервер. пипец. Мозги на изнанку вывернулись =) но комментс.
Как я уже говорил, поставлена задача - организовать интерфейс для просмотра данных сессии пользователей, которые находятся на сайте. - нет доступа к файловой системе - нужно организовать именно интерфейс для просмотра Пока я вижу 2 варианта 1) Просто записывать все данные сесси в базу, при каждом обращении клиента к серверу. Но это черевато лишними записями в базе + лишний запрос на каждую страницу, не критично но не красиво. 2) Организовать хранение сессий в базе и написать собственную функцию unserialize чтобы достать данные оттуда. Склоняюсь ко 2-му варианту. Если честно я думал что проблема избитая и тривиальная и есть куча стандартных методов решения, видимо я ошибся =)
Как это "нет доступа к файловой системе". А php вам на что? Если используете файлы как хранилище сессий - открывайте директорию и читайте файлы. Если используете базу как бекенд сессий - читайте базу. Как декодировать информацию сессии? Читайте раздел функций по работе с сессией в документации - там есть соответствующие функции + коментарии к ним.
При хранении данных в БД имеем сериализованный массив $_SESSION вот в таком виде Код (Text): userType|s:5:"admin";AdminLogin|s:4:"test";AdminEmail|s:4:"test"; Чтобы эту строку превратить снова в объект обычная функция unserialize не подходит, возможно есть другая о которой я не знаю.