SESSION read+decode

AKAPE

Новичок
SESSION read+decode

задача такая: нужно прочитать данные чужой сессии из файла и декодировать их в нужную пременную. Почему то пхп отказываеться открывать\читать файл сессии если у самого запущена другая сессия? К тому же функция session_decode() апаковывает данные из сессии в массив S_SESSION тем самым перезаписав мою сессию :(
 

AKAPE

Новичок
в чате последние 100 сообщений юзера сохраняются в его сессии, для проверки флуда, сейчас же захотелось реализовать фукцию вроде "посмотреть, что он сказал", ...

-~{}~ 07.05.04 14:52:

так же тайм-ауте нужно подсчитать сколько он сказал фраз, когда каких, составить статистику и записать это в базу...
 

su1d

Старожил PHPClubа
разве не работает что-нибудь типа такого:
PHP:
$ANOTHER_SESSION = unserialize(file_get_contents(session_save_path().'/sess_'.$SESSION_ID));
?
 

AKAPE

Новичок
говорю же - пхп отказывается читать файл сессии при запущеной другой + формат сесси не совсем обычный сериалайз, ....
 

su1d

Старожил PHPClubа
AKAPE
напиши тогда свой обработчик сессий.
[m]session_set_save_handler[/m]()
 

AKAPE

Новичок
уже думал. Но ведь это будет гораздо меденее...

-~{}~ 07.05.04 15:01:

к тому же сборка мускора еще...
 

гоша

Guest
[m]session_decode[/m]

кроме того, можно писать не $_SESSION['myvar']=... , а $_SESSION['mySessionVars']['myvar'], тогда для десериализации можно просто отрезать mySessionVars| в начале.

а вообще, прямое копание в файлах сессий -- плохо (откуда, например, известно, как собственно нужный файл называется и где лежит?).

сессии -- это сесии, сообщения в чате -- это данные, и хранить их надо отдельно.
 

su1d

Старожил PHPClubа
"гораздо" -- это вряд ли.
а сборка мусора происходит после отработки запроса лишь с вероятностью 1/1000, если не ошибаюсь.
 

AKAPE

Новичок
какой файл открыть я знаю, в юзерлисте храниться айди сессии кажого пользователя.
А mySessionVars завязать на ID ужной сесии??

-~{}~ 07.05.04 15:09:

вероятность у меня выставлена на 20% ... потомучто этих злодеев в чате много, входят- выходят ...

-~{}~ 07.05.04 15:20:

Господа, на чем посоветуете остановиться, чтобы не вышло через зад?

-~{}~ 07.05.04 15:25:

разобрался, если указать другую дерикторию (не /tmp) то спокойно открывает чужую сессию. данные есть. может быть перез session_decode() session_write_close(), а после обработки всех нужных чужих сессий вновь стартовать свою сессию? :))

-~{}~ 07.05.04 15:36:

session_decode() не работает без session_start() и после session_write_close() :(

-~{}~ 07.05.04 16:40:

тьфу ты, ... решился уже написать проой движок для сессий, просто хранить сессии так же в файлах, только в формате serialize()-а, ... подвесил все функции на session_set_save_handler() а он то всеравно формат свой оставляет :(
 

AKAPE

Новичок
ох, если бы можно было указать фомат сериализации в сессии как обычный serialize() ....

-~{}~ 07.05.04 16:52:

session.serialize_handler defines the name of the handler which is used to serialize/deserialize data. Currently, a PHP internal format (name php) and WDDX is supported (name wddx). WDDX is only available, if PHP is compiled with WDDX support. Defaults to php.

почему же в сессиях и результат serialize() разные?
 

tony2001

TeaM PHPClub
>ох, если бы можно было указать фомат сериализации в сессии как обычный serialize() ....
=))
незачем было такие проблемы выдумывать просто.

>почему же в сессиях и результат serialize() разные?
чтоб в чужие сессии не лазили некоторые.
не догадался сам?
 

tony2001

TeaM PHPClub
AKAPE
не делал бы так.
все сообщения - в одну таблицу (нет базы? ну еще куда-нить), а оттуда уже брать, если уж так приспичило.
 

AKAPE

Новичок
почему вы все так негативно настроены против доступа к чужим сессиям? ... их механизм готовый рабочий, все чудесно, а забирать сообщения мне нужно только 1 раз при выходе и когда кто-то раз в окем веке захочет прочитать их ....
 

tony2001

TeaM PHPClub
>почему вы все так негативно настроены против доступа к чужим сессиям?
потому, что это механизм не предназначен для решения подобных задач.
у него свои задачи - хранение временных юзерских данных.
и он их прекрасно решает.

>... их механизм готовый рабочий, все чудесно
тогда в чем вопрос, если все чудесно?

>а забирать сообщения мне нужно только 1 раз при выходе и когда кто-то раз в окем веке захочет прочитать их ....
это неважно.

просто сессии никакого отношения к твоей задаче не имеют.
 

AKAPE

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

tony2001

TeaM PHPClub
>очень несогласен, есть миллион случаев, когда прочитать чужую сессию было бы ой как нужно.
не знаю ни одного, кроме попытки взломать сайт через сессии.
 
Сверху