Откуда session_id() берёт SID?

Вероломство

Это весь вопрос.

 

don.bidon

то есть доку по сессиям невмоготу прочитать?

 

MouseZver

Вероломство

@MouseZver ты не так понял: мне надо не как создаётся SID, а как пользователю он предоставляется при помощи session_id() откуда функция берёт это значение, чтобы я его увидел?

Откуда она его вымайнивает? :)

PHP:
  1. session_start(); // SID сгенерировался
  2.  
  3. echo session_id(); // откуда берётся SID?

С сервака или из кукисов?
— Добавлено —
@MouseZver давай сразу расширю вопрос: будет ли SID, присланный методом подмены в куки через курл, соответствовать session_id() той страницы, где расположена session_start()? О как :)

То есть изменится ли session_id() на тот, который прислан от балды?

 

mkramer

С куки, конечно. Чтобы курлом имитировтаь браузер, надо сохранять куки ответов и пересылать обратно. Если прислать другой session_id, как ты выражаешься, от балды, php не найдёт соответствующий файл сессии (сессии по дефолту хранятся в файлах)

 

Вероломство

@mkramer мне не надо ничего имитировать, мне нужно знать, если мне курлом прислали подменённые куки с каким-то SID, то какой SID будет в session_id() на странице с session_start()?

Я хочу проверить: совпадает ли присланная хрень с session_id().

Если подменили куки и session_id() берёт SID из куки, то ясен пень хрень совпадёт сама с собой.

Но сессии хранятся же на серваке и там SID, созданный session_start() не совпадёт с присланной в куках хренью, то есть мне в куки прислали — МАМА, session_start() для curl_exec создал на серваке сессию — ПАПА, я сравниваю то что прислали с session_id() (в ней по логике SID с сервака — ПАПА) — ОНИ СОВПАДУТ?

PHP:
  1. echo session_id(); // ОТКУДА ВОТ ЭТО ЗНАЧЕНИЕ: с сервака или из кукисов ЁПТА

Я ПРАВИЛЬНО РАССУЖДАЮ? :)

 

Drunkenmunky

С сервака.
Который извлекает его из кукиз, а если их нет, то ищет в GET.
Если и там не находит, то генерирует новый. То есть помещает в SID.
Который, если у клиента отключены куки, присоединяет ко всем локальным URL, а если включены, то записывает в кукиз при session_start()

 

Вероломство

@Drunkenmunky файл сессии получает имя из куки и потом создаётся? Или сначала на сервере создаётся файл сессии и в куку помещается SID?

вот так мне будет понятнее, а то Вы как-то все наполовину отвечаете, я не могу так сообразить, сори :)

 

Drunkenmunky

В куки(или GET) находится пара ключ=значение(имя сессии=её ID)
Если имя сессии совпадает с установками php.ini или session_name(‘name’), то ищется файл сессии со значением SID, если его нет, то создается(имя и ID должно соответствовать 0-9a-zA-Z, и что-то ещё вроде).
И вот из него уже извлекаются данные $_SESSION
Если они там есть.

 

mkramer

Смотри, алгоритм примерно такой у session_start()

  1. Проверяется, есть ли кука с айди сессии. Если нету — создаётся новая сессия, и конец. Если есть, идём дальше.
  2. По этому айди на серваке ищется файл. Если он есть, то подключается сессия с присланным айди, а данные из этого файла десериализуются в массив $_SESSION
  3. Если файла нету, значит присланная кука недействительная, и создаётся новая сессия, с новым айди, который будет передан клиенту с кукой
 

Вероломство

@mkramer вот и всё что мне надо было, а то мне тут впаривали, что можно передать курлом в куки левый SID и он совпадёт с session_id(), который создан session_start()

всё понятно: этого сделать нельзя, только если случайно угадать

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *