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

Переменные $_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. Затем, когда сеанс открывается на другой странице, он сканирует компьютер для ключа пользователя и запускается на сервер для получения ваших переменных.

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