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


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

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

Author: cjakeman, 2009-03-05

3 answers

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

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

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

 28
Author: Gareth, 2009-03-05 08:37:51

Собственный модуль сеанса 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 обрабатывать пересылку идентификатора. Но в любом случае имейте в виду, что, особенно если вы используете GET для передачи идентификатора, более вероятно, что некоторые из ваших пользователей отдадут свои (действительные) идентификатор сеанса случайно.

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

 0
Author: VolkerK, 2009-03-05 08:39:24

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

 0
Author: Ajay Patel, 2012-11-30 11:03:37