Чи $_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запиту, який ви кілька разів бачите)
Зазвичай вони зберігаються на сервері. Те, де вони зберігаються, залежить від вас як розробника. Ви можете використовувати session.save_handlerзмінну конфігурації та the, session_set_save_handlerщоб контролювати збереження сеансів на сервері. Метод збереження за замовчуванням - це збереження сеансів у файлах. Там, де вони зберігаються, контролюється session.save_pathзмінною.
Одне доповнення: Слід зазначити, що у випадку, коли "/ tmp" - це каталог, де зберігаються дані сеансу (що, здається, є значенням за замовчуванням), сеанси не зберігатимуться після перезавантаження цього веб-сервера, як "/ tmp "часто очищається під час перезавантаження. Концепція стійкості, орієнтованої на клієнта, стоїть і падає із збереженням пам’яті на сервері - що може вийти з ладу, якщо каталог даних / / tmp буде використаний для даних сеансу.
Я використовую Ubuntu, і мої сеанси зберігаються в / var / lib / php5.
Як зазначав містер Тейлор, це зазвичай встановлюється у php.ini. Зазвичай вони зберігаються у вигляді файлів у певному каталозі.
Для ubuntu 16.10 - це сеанси збереження в / var / lib / php / session / ...
Як це працює? Звідки я знаю, що це я?
У більшості сеансів на комп'ютері користувача встановлено ключ користувача (який називається sessionid), який виглядає приблизно так: 765487cf34ert8dede5a562e4f3a7e12. Потім, коли сеанс відкривається на іншій сторінці, він сканує комп'ютер на ключ користувача та запускається на сервер, щоб отримати ваші змінні.
Якщо ви помилково очистите кеш, то ваш ключ користувача також буде очищений. Ви більше не зможете отримати свої змінні з сервера, оскільки не знаєте свого ідентифікатора.
У моїй машині Ubuntu сеанси зберігаються на
/var/lib/php/sessions
і ви повинні sudo lsв цей каталог тільки lsвін буде кидати
ls: не вдається відкрити каталог '.': Дозвіл відхилено
І на моєму сервері Windows Wamp зберігаються php-сеанси
C:\wamp64\tmp
і якщо ви встановите автономний php на Windows, то значення за замовчуванням не встановлено
session.save_path => no value => no value
Багато відповідей вище непрозорі. На мою думку, автор цього питання просто хоче знати, де за замовчуванням зберігаються змінні сеансу. Відповідно до цього: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sesions вони просто зберігаються на сервері за замовчуванням . Сподіваємось, інші вважають цей внесок значимим.