Подтвердить что ты не робот

Как работают сеансы PHP, когда файлы cookie отключены?

Я пытался исследовать этот механизм, но только нахожу подсказки, и они не очень последовательны. Как сеанс _id отправляется в браузер и как браузеру поручено вернуть его, когда пользователь запрашивает новую страницу?

Спасибо, Крис

4b9b3361

Ответ 1

PHP сделает 2 вещи:

  • Он перепишет все ссылки, чтобы передать дополнительный параметр GET, обычно PHPSESSID, но это можно изменить, установив session.name в php.ini
  • Он добавит скрытый ввод с тем же именем после всех <form> открывающих тегов.

Обратите внимание, что это опасная вещь, потому что любой, кто вы, например. скопируйте/вставьте URL-адрес, содержащий параметр PHPSESSID, сможете поделиться сеансом входа на сайт - веб-сервер не имеет простого способа сказать, что вы отличаетесь от человека, которому вы отправили ссылку...

Ответ 2

Собственный модуль сеанса PHP поддерживает выборку идентификатора сеанса из данных GET и POST (кроме файлов cookie). Вы можете использовать http://uk.php.net/manual/en/session.configuration.php#ini.session.use-trans-sid и http://uk.php.net/manual/en/session.configuration.php#ini.url-rewriter.tags чтобы php обрабатывал пересылку id. Но в любом случае имейте в виду, что, особенно если вы используете GET для переноса идентификатора, более вероятно, что некоторые из ваших пользователей случайно удалили свой (действительный) идентификатор сеанса.

Базовый механизм не заботится о том, как идентификатор сеанса был перенесен с клиента на сервер. Пока вы передаете "правильное" значение session_id(), это сработает - даже если вы сделаете что-то странное (глупо?) Как злоупотребление заголовком etag как средство для идентификатора сеанса; -)

Ответ 3

Сеансы работают, создавая уникальный идентификатор (UID) для каждого посетителя и сохраняя переменные на основе этого UID. UID либо (1) хранится в файле cookie, либо (2) распространяется по URL-адресу.