Где хранятся переменные $ SESSION?



Are $_SESSION переменные хранятся на клиенте или сервере?

489   9  
PHP

9 ответов:

расположение $_SESSION хранение переменных определяется PHP session.save_path конфигурации. Как правило, это /tmp в системе Linux / Unix. Используйте phpinfo() функция для просмотра ваших конкретных настроек, если не на 100% уверен, создав файл с этим содержимым в DocumentRoot домена:

<?php
    phpinfo();
?>

вот ссылка на документацию PHP по этой конфигурации настройка:

http://php.net/manual/en/session.configuration.php#ini.session.save-path

Как уже упоминалось, содержимое хранится на сервере. Однако сеанс идентифицируется идентификатором сеанса, который хранится у клиента и отправляется с каждым запросом. Обычно идентификатор сеанса хранится в файле cookie, но он также может быть добавлен к URL-адресам. (Это PHPSESSID query-параметр вы несколько раз видите)

они обычно хранятся на сервере. Где они хранятся, зависит от вас как разработчика. Вы можете использовать session.save_handler переменной конфигурации и session_set_save_handler для управления сохранением сеансов на сервере. Метод сохранения по умолчанию-сохранение сеансов в файлы. Где они спасаются контролируется session.save_path переменной.

одно дополнение: следует отметить, что в случае, если "/tmp" - это каталог, в котором хранятся данные сеанса (который, по-видимому, является значением по умолчанию), сеансы не будут сохраняться после перезагрузки этого веб-сервера, поскольку "/tmp" часто очищается во время перезагрузки. Концепция клиентской персистентности стоит и падает с сохранением хранилища на сервере, что может привести к сбою, если каталог "/tmp" используется для данных сеанса.

на Debian (разве это не относится к большинству дистрибутивов Linux?), он сохранен в /var / lib/php5/. Как уже упоминалось выше, он настроен в PHP.Ини.

Я использую Ubuntu, и мои сеансы хранятся в /var/lib/php5.

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

для ubuntu 16.10 сеансы сохраняются в /var/lib/php/session/...

Как это работает? Откуда он знает, что это я?

большинство сеансов устанавливают пользовательский ключ (называемый sessionid) на компьютере пользователя, который выглядит примерно так: 765487cf34ert8dede5a562e4f3a7e12. Затем, когда сеанс открывается на другой странице, он сканирует компьютер на наличие пользовательского ключа и запускается на сервер, чтобы получить ваши переменные.

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

Comments

    Ничего не найдено.