вопрос по session_id

Духовность™

Продвинутый новичок
вопрос по session_id

Пишу класс-обертку для сессий.
Возник вопрос по session_id.

Правильно ли я понимаю, что вызов session_id в активной сесси должен либо игнорироваться, либо кидаться исключением?
 

Фанат

oncle terrible
Команда форума
мне всегда казалось, что вызов session_id() должен кидаться текущим идентификатором
 

Духовность™

Продвинутый новичок
*****
Да. Смотри. В мане написано, что session_id() с параметром должен вызываться до session_start().

Есть вот такой код, в котором умышленно допущена ошибка - вызов session_id() с параметром после старта сессии:

PHP:
session_id('SID-111111');

session_start();

$_SESSION['var'] = 1; 

print_r($_SESSION); // [var] => 1 в сесии SID-111111

session_id('SID-222222');

$_SESSION['var2'] = 2;

print_r($_SESSION); // [var] => 1, [var2] => 2 в сессии SID-222222

echo session_id(); // выводит SID-222222
вот это меня и смутило, что
1. PHP не ругнулся на вызов session_id('SID-222222');
2. ID cессии уже после старта сменился на SID-222222
 

jonjonson

Охренеть
Dl, он документацию знает. Его волнует скорее запрет смены идентификатора для имеющейся сессии. Хотя вопрос не совсем понятен. Нет развёрнутого контекста.

Теперь есть.

А зачем эта химия? Чисто по рукам разработчикам бить?
 

Духовность™

Продвинутый новичок
Его волнует скорее запрет смены идентификатора для имеющейся сессии.
да. я не пойму, почему это допустимо. см. пример выше.

т.е. ман пишет одно, а PHP вполне допускает мену ID во время работы. Где истина?

-~{}~ 24.03.09 15:57:

А зачем эта химия? Чисто по рукам разработчикам бить?
да просто интересно стало, почему так..
 

jonjonson

Охренеть
triumvirat, я не сталкивался с тем, что бы изобретать свой id для сессии. И смысла этого не понимаю.

ПРи завершении работы скрипта кричать: Я ВАМ РУКИ ОТОРВУ!?

-~{}~ 24.03.09 23:00:

triumvirat, просто мне всё одно, если это выдуманная проблема. Хотят менять? Ну пусть меняют... Может там борьба с ловлей id... Хотя это скорее глупость
 

findnext

Новичок
да просто интересно стало, почему так..
session_id — Get and/or SET the current session id - это не только гет но и сет...

-~{}~ 24.03.09 17:51:

Есть вот такой код, в котором умышленно допущена ошибка - вызов session_id() с параметром после старта сессии:
это не ошибка, это переопределение session_id
 

findnext

Новичок
видимо имели ввиду что первый раз нужно вызвать перед вызовом session_start
 

Dl

Новичок
Ну а после session_start нет никакого эффекта.
Да и не сказано, что это недопустимо))
 

dimagolov

Новичок
Знаете в чем прикол? PHP действует как в том анекдоте про "спрятать то я спрятал, а прекратить не прекратил". Идентификатор и (что более существенно) файл сессии меняется на новый id и все данные записываются в новый файл. Но клиент об этом не догадывается, так как получает в заголовке тот id, что был на момент session_start()

п.с. видимо логика в том, что на сервере то все отрабатывается так, как и задумывалось - сессия меняется. То, что клиент остается в пролете это проблемма программиста, который такой бред написал, а не PHP, у которого все ОК. потому никаких нотисов и не появляется, проблем то нету с точки зрения PHP.

-~{}~ 24.03.09 11:26:

triumvirat, вот раз пишешь обверку, то и отслеживай этот момент, это как раз зона ее (обвертки) ответственности.
 

x-yuri

Новичок
раз до сих пор такое поведение имеет место быть, значит никто еще на эти грабли не наткнулся
 
Сверху