2017-02-08 8 views
3

КЛИЕНТ: start_session() создает печенье (по умолчанию): Name: PHPSESSID; Content: 1q2w3e4r5t; Domain: '/'; Expires:...если сеансы хранятся в файлах, почему файлы cookie все еще используются для их хранения?

SERVER: Он также создает файл, хранящийся в (мой случай): /var/lib/php/sessions. Назовите это там: sess_1q2w3e4r5t. (Абсолютный путь: /var/lib/php/sessions/sess_1q2w3e4r5t)

Итак, у нас есть два физических вещей, связанных с сеансом, который я только что создал.

  • Какой смысл иметь и то и другое?

  • Могу ли я просто сохранить свою сессию в /var/lib/php/sessions независимо от use_only_cookies опции?

  • У меня есть классический пример с переменной $_SESSION['counter']. Это означает, что каждый раз, когда я перезагружаю страницу example.php, приращение $_SESSION['counter'] (++). Итак, в цикле нажатия кнопки F5, скажем, я получил 55 как значение $_SESSION['counter']. Наконец, я его, что печенье, но не/var/lib... файл. После этого удаления я получаю56, и цикл продолжается как обычно. Это просто заинтриговало меня и вызвало вопрос. Необходимы сеансовые файлы?

  • По-прежнему возможен способ, которым мой сайт просто хранит сеанс только на сервере и не использует файлы cookie?

Вот как я удалил файл cookie. Уведомление counter значение 69.

Deleting the cookie

Тогда F5:

are cookies necessary?

+0

А? Без файлов cookie все ваши запросы будут неактивными. – emaillenin

+0

Но, как я уже сказал, после удаления cookie '$ _SESSION ['counter']' все еще сохранял то же значение ... исправьте меня, если я ошибаюсь, ссылаясь на него как на вид запроса –

+1

Возможно, вы смешаете что удаление cookie не совпадает с удалением сеанса или переменной сеанса? Вам нужно будет использовать 'unset ($ _ SESSION ['counter'])' в PHP, чтобы * потерять * его значение. –

ответ

0

Пользователю, получающему доступ к вашему веб-сайту, присваивается уникальный идентификатор, так называемый идентификатор сеанса . Это либо сохраняется в файле cookie на стороне пользователя , либо распространяется по URL-адресу.

  • Точка того как сессия и печенье является котировка выше

Короче: без печенья, клиент стал бы странным посетителем

0

Куки есть так, что клиент может сообщить серверу, какой файл сессии является их. Значение cookie соответствует файлу, созданному на сервере.

Без этого сервер просто создаст новый файл сеанса для клиента, и, очевидно, ни один из данных предыдущего запроса не будет там.

Я могу только представить, что вы не удаляете cookie правильно.

+0

Я бы сделал токенизацию файла сеанса, чтобы получить идентификатор сеанса: 'sess_ + 1q2w3e4r5t'. Таким образом, не нужно куки. –

+0

Итак, как вы знаете в двух последующих запросах, если клиент является одним и тем же лицом? Вы просто говорите о вещах на стороне сервера. Клиент должен указать серверу, какой сеанс принадлежит им. – Scopey