Де зберігаються змінні $ _SESSION?


158

Чи $_SESSIONзберігаються змінні на клієнті чи сервері?


на сервері, де ви запускаєте додаток php, для конкретного шляху вам потрібно перевірити за допомогою phpinfo ()
щільністьx

Відповіді:


168

Місце $_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


129

Як вже було сказано, вміст зберігається на сервері. Однак сеанс визначається ідентифікатором сеансу, який зберігається у клієнта та надсилається з кожним запитом. Зазвичай ідентифікатор сеансу зберігається у файлі cookie, але він також може бути доданий до URL-адрес. (Це параметр PHPSESSIDзапиту, який ви кілька разів бачите)


41
+1, оскільки ви мали на увазі, що файли cookie не зберігають вміст $ _SESSION (цей вміст зберігається на сервері, тому не вразливий для модифікації клієнтом)
shufler

12
Відмінна відповідь! Я шукав питання: "Чому сеанси закінчуються після видалення кешу браузера?". І ти врятував мені день.
Учень

2
сервер створити файл sess_7nu9p0fvidvva6ouaugqcc8292 та оповіщення браузера (getCookie ('PHPSESSID')); // 7nu9p0fvidvva6ouaugqcc8292
zloctb

2
Plus1 - для відповіді на питання: "... зберігається на клієнті або сервері?"
Алекс Варгас

22

Зазвичай вони зберігаються на сервері. Те, де вони зберігаються, залежить від вас як розробника. Ви можете використовувати session.save_handlerзмінну конфігурації та the, session_set_save_handlerщоб контролювати збереження сеансів на сервері. Метод збереження за замовчуванням - це збереження сеансів у файлах. Там, де вони зберігаються, контролюється session.save_pathзмінною.


18

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


13

У Debian (чи не так це для більшості дистрибутивів Linux?), Він зберігається в / var / lib / php5 /. Як було сказано вище, він налаштований у вашому php.ini.


12

Я використовую Ubuntu, і мої сеанси зберігаються в / var / lib / php5.


1
Спасибі, це все, що я хотіла. Так, якщо вони не були в звичайному місці, мені потрібно буде зламати INI, але я просто хотів знати "Ей, де зазвичай зберігаються сеанси ?" / var / lib / php / session / це.
Ерік Л.

7

Як зазначав містер Тейлор, це зазвичай встановлюється у php.ini. Зазвичай вони зберігаються у вигляді файлів у певному каталозі.



0

Як це працює? Звідки я знаю, що це я?

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

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


0

У моїй машині Ubuntu сеанси зберігаються на

/var/lib/php/sessions

і ви повинні sudo lsв цей каталог тільки lsвін буде кидати

ls: не вдається відкрити каталог '.': Дозвіл відхилено

І на моєму сервері Windows Wamp зберігаються php-сеанси

C:\wamp64\tmp

і якщо ви встановите автономний php на Windows, то значення за замовчуванням не встановлено

session.save_path => no value => no value

-1

Багато відповідей вище непрозорі. На мою думку, автор цього питання просто хоче знати, де за замовчуванням зберігаються змінні сеансу. Відповідно до цього: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sesions вони просто зберігаються на сервері за замовчуванням . Сподіваємось, інші вважають цей внесок значимим.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.