Переменные $_SESSION
хранятся на клиенте или на сервере?
Местоположение хранилища переменных $_SESSION
определяется конфигурацией session.save_path
PHP. Обычно это /tmp
в системе Linux / Unix. Используйте phpinfo()
для просмотра ваших конкретных настроек, если не на 100% уверен, создав файл с этим контентом в DocumentRoot
вашего домена:
<?php phpinfo(); ?>
Вот ссылка на документацию PHP в этом настройке конфигурации:
http://php.net/manual/en/session.configuration.php#ini.session.save-path
Как уже упоминалось, содержимое хранится на сервере. Однако сеанс идентифицируется идентификатором сеанса, который хранится у клиента и отправляется с каждым запросом. Обычно идентификатор сеанса хранится в файле cookie, но его также можно добавить к URL-адресам. (Это PHPSESSID
запроса PHPSESSID
вы когда-то видите)
Они обычно хранятся на сервере. Где они хранятся, зависит от вас как разработчика. Вы можете использовать переменную конфигурации session.save_handler
и session_set_save_handler
чтобы контролировать, как сеансы сохраняются на сервере. Метод сохранения по умолчанию – сохранение сеансов в файлах. Там, где они сохраняются, управляется переменной session.save_path
.
Одно дополнение: Следует отметить, что в случае, если «/ tmp» – это каталог, в котором хранятся данные сеанса (что, по-видимому, является значением по умолчанию), сеансы не будут сохраняться после перезагрузки этого веб-сервера, как «/ tmp "часто очищается во время перезагрузки. Концепция клиентской мучительной настойчивости стоит и падает с сохранением хранилища на сервере, что может потерпеть неудачу, если для данных сеанса используется каталог «/ tmp».
В Debian (это не так для большинства дистрибутивов Linux?), Он сохраняется в / var / lib / php5 /. Как упоминалось выше, он настроен в вашем php.ini.
Я использую Ubuntu, и мои сеансы хранятся в / var / lib / php5.
Как отметил г-н Тейлор, это обычно устанавливается в php.ini. Обычно они хранятся в виде файлов в определенном каталоге.
Для ubuntu 16.10 сеансы сохраняются в / var / lib / php / session / …
Как это работает? Как он знает, что это я?
В большинстве сеансов пользовательский ключ (называемый sessionid) на компьютере пользователя выглядит примерно так: 765487cf34ert8dede5a562e4f3a7e12. Затем, когда сеанс открывается на другой странице, он сканирует компьютер для ключа пользователя и запускается на сервер для получения ваших переменных.
Если вы по ошибке очистите кеш, тогда ваш пользовательский ключ также будет очищен. Вы больше не сможете получать переменные с сервера, так как не знаете свой идентификатор.