|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
|
Зачем используют сессии?09.10.2020, 20:20. Показов 5175. Ответов 85
Метки нет (Все метки)
Достаточно долгое время занимаюсь веб технологиями и PHP и до сих пор не могу понять зачем (не как, а зачем) используют сессии.
Опишу механизм сессии упрощенно При сессии пользователю ставится cookie с идентификатором сессии (для PHP - PHPSESSID). Вся информация пользователя, которую надо сохранить, сохраняется в файлах на сервере. И при обращении пользователя, сервер читает идентификатор (PHPSESSID) и ищет файлы ассоциированные с этим идентификатором. Фактически сессия - это куки на сервере. Механизм кук более простой. Вся информация пользователя, которую надо сохранить, сохраняется в файлах на компьютере пользователя (в файлах, называемых cookie). И оттуда же читается. В чем проблема Проблема в том, что срок жизни сессии устанавливается на сервере. В связи с этим возникает множество неудобств 1) По умолчанию он 24 минуты. 2) Не всегда есть доступ к php.ini. (Обычный хостинг) 3) Максимальный срок жизни сессии 24 часа. Моя задача, как программиста сделать использование сайта максимально удобным. Да и как пользователь я хочу чтобы мне было комфортно работать в интернете. Часто возникает ситуация, что я авторизовавшись работаю с сайтом. И после закрытия браузера (или через определенное время) моя авторизация пропадает. Нужно вводить данные снова. Это не удобно. С куками, таких проблем, разумеется нет. Зачем используют сессии, когда есть куки? Куки удобнее, проще, универсальнее. Не будет "автовыхода" с сайта. Человек сам решит когда ему выйти. Не нужно настраивать сервер. Данные каждого человека хранятся на его компьютере (в его куках). Сплошные преимущества.
0
|
|
| 09.10.2020, 20:20 | |
|
Ответы с готовыми решениями:
85
Зачем нужны сессии? Зачем используют Eclipse? |
|
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
|
||
| 10.10.2020, 17:02 | ||
|
А теперь такая ситуация - вы не входили на сайт с конкретного устройства к примеру год. И тут не известно вы ли это вообще, может устройством уже пользуется другой человек. Поэтому нужно ограничить срок действия токена. Далее 2 варианта 1) автоматически продлевать токен, пока вы активно пользуетесь сайтом - вас не будет выкидывать. А если вы давно не заходили - тогда нужно будет войти. 2) просто когда истекает срок действия заставить войти, генерируя новый токен. 3) совместить 2 варианта. Если генерировать общий токен для всех устройств, то какие тут могут быть проблемы? Допустим вы сделали токен на 30 дней. Потом в последний день зашли с другого устройства - и получается можете его продлить и для другого устройства тоже. Либо вас выкинет через 5 минут, так как текущий токен закончился. Именно поэтому для каждого отдельного устройства генерируется свой - где у каждого свой срок действия. Когда я захожу с одного устройства - это никак не влияет на токен и его срок действия другого устройства. Далее можно в БД кроме самого токена еще и записывать само устройство - тогда мы можем сделать так, чтоб если каким-то образом токен удалось украсть, то по нему не могли зайти с другого устройства.
0
|
||
|
Заблокирован
|
||
| 10.10.2020, 17:23 | ||
![]() смотрим такую ситуацию: я залогинен с ПК, кто-то залогинился с ТЕЛА, меня на ПК выкидывает тут либо можно сообщить пользуну, что на аккаунте несколько устройств и предложить ему провериться он ли это либо он будет спокойно сидеть с нескольких устройств и ничего не заметит, что его ломанули либо он залогинится и злоумышленника выкинет и тот опять залогинится и тебя выкинет и ты обратишься в обратку что что-то не так либо тупо сменишь пасс и залогинишься ОДИН
0
|
||
|
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
|
||
| 10.10.2020, 17:29 | ||
|
А так как раз за счет того, что у вас в БД хранятся токены всех устройств - то когда появляется новое устройство - можно оповещать пользователя, что произошел вход/попытка входа с такого-то устройства, в таком-то городе, вам в VK не приходили такие сообщения? Тогда пользователь сам решит, что делать. Если это был не он, то подстрахуется и поменяет пароль. Нажмет кнопку "выйти из под всех устройств" и т.д.
0
|
||
|
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,949
|
||||
| 10.10.2020, 17:30 | ||||
Появляется зависимость от рабочего каталога. Программные файлы не должны от этого зависеть.Не разводите оффтоп. Т.е. на это сообщение лучше не отвечать.
0
|
||||
|
Заблокирован
|
|||
| 10.10.2020, 17:41 | |||
![]() какая зависимость? ![]() мы каталог сменили и вместо require dirname(__DIR__) . '/путь'; пишем просто ВЕЗДЕ В ЛЮБОМ МЕСТЕ СКРИПТА require 'путь'; магия ![]() потом смотрим в регене скрипт полсекунды вместо одной тысячнойсуперпрограммист я так думаю потерялся в своём симфони, помешался на ООП и решил что вызов интерпретатора работает как синглтон и можно одну и ту же функцию юзать без затрат, интерпретатор же уже вызвали ![]() ну это всё лирика, но return dirname(__DIR__) в методе getProjectDir() - это было круто
0
|
|||
|
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,949
|
|
| 10.10.2020, 17:43 | |
|
0
|
|
|
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
|
||
| 10.10.2020, 17:45 | ||
|
Как правило все пути к файлам (либо путь к папке, где должен находиться файл) прокидываются в качестве настроек в конструктор служебных классов только таким образом можно избавиться от зависимости путей. И тогда chdir(dirname(__DIR__)); никак на это не влияет. При должной архитектуре никаких проблем с этим быть не должно. И такой способ на самом деле достаточно часто используют, чтоб вместо dirname(dirname(dirname(__DIR__))) - писать путь от корня.
0
|
||
|
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,949
|
||
| 10.10.2020, 17:47 | ||
|
0
|
||
|
Заблокирован
|
||||
| 10.10.2020, 17:56 | ||||
![]() Добавлено через 1 минуту ![]() Добавлено через 4 минуты ![]() а что тут такого зафигачим dirname(dirname(dirname(__DIR__))) вместо dirname(__DIR__, 3)
0
|
||||
|
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
|
|
| 10.10.2020, 17:59 | |
|
Verolomstvo, Меня относительные пути больше пугают. Потому что люблю перемещать файлы с классами то в одну папку, то в другую. От этого не должен страдать код.
0
|
|
|
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,949
|
|||
| 10.10.2020, 18:06 | |||
|
Добавлено через 4 минуты
0
|
|||
|
Заблокирован
|
|||||||
| 10.10.2020, 18:11 | |||||||
|
estic,
мы в папке public, файл index.php
![]() если структура папка папка public vendor то путь ВЕЗДЕ МОЖНО ПИСАТЬ не require_once dirname(__DIR__) . '/папка', а просто require_once 'папка' Добавлено через 4 минуты
0
|
|||||||
|
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,949
|
|
| 10.10.2020, 18:18 | |
|
Verolomstvo, я вам уже один раз про chdir для 'vendor/autoload' и т.п. написал. Оставьте рабочий каталог для обрабатываемых файлов. Если не можете обойтись без относительных путей для программных файлов, используйте include_path (set_include_path). Другие могут.
0
|
|
|
Заблокирован
|
|
| 10.10.2020, 18:19 | |
|
0
|
|
|
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,949
|
||
| 10.10.2020, 18:28 | ||
Мне, например, очень весело наблюдать за вашими в подавляющем большинстве случаем необоснованными претензиями
0
|
||
|
Заблокирован
|
||||||||||||||||||
| 10.10.2020, 18:38 | ||||||||||||||||||
![]() но нам этого мало
![]()
ещё для крутизны можно __DIR__ переопределить
0
|
||||||||||||||||||
|
3901 / 3239 / 1353
Регистрация: 01.08.2012
Сообщений: 10,917
|
||||
| 10.10.2020, 21:05 | ||||
|
Т.е. описанные вами неудобства относятся только к стандартному механизму сессий. Если эти неудобства для вас критичны - используйте другой механизм. Например, Laravel может хранить тексты ошибок валидации в сессиях, чтобы они сохранялись после редиректа (юзер заполняет форму с ошибками - ошибки сохраняются в сессию - юзер редиректится на ту же форму методом GET - ошибки берутся из сессии и отображаются). Если ошибок много, в куках может не хватить места на их хранение. Особенно если вместе с ошибками там хранится корзина и другие параметры. Другой пример - корзина неавторизованного пользователя. Можно, конечно, написать свою реализацию её хранения, но работать это будет по тому же принципу, как работают сессии. Или когда юзер заполняет форму (Имя, Логин и т.п.), затем уходит со страницы с формой и через какое-то время возвращается, можно взять из сессии введённые им ранее данные и подставить на текущую страницу. Хранить такие данные в куках считается небезопасным, а вот в сессиях - без проблем. Добавлено через 17 минут Я как-то здесь дискутировал с кем-то, кто считал, что в никах пользователей не должно быть спецсимволов. Какой-то цифровой фашизм. Но на своём личном сайте, безусловно, вы можете делать что угодно.
0
|
||||
|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
|||
| 11.10.2020, 15:25 [ТС] | |||
|
На практике корзина неавторизованного пользователя реализуется через сессии. Пользователь может добавить товар в корзину, пойти на другой сайт и сравнить цены, решить что покупать тут ему не надо. А потом передумать и вернуться - а сессия уже истекла и в корзине пусто. Реальный пример из жизни. И это раздражает. Меня, как пользователя, раздражает когда я добавил интересующие товары в корзину, чтобы их не потерять и отслеживать их цены. И сделал это на нескольких сайтах. Обдумываю где купить или банально жду зарплату ) А на одном из сайтов сессия истекла и корзина опустела. И я снова ищу эти товары на сайте и добавляю их в корзину. Или ухожу с этого сайта. Сайт потерял потенциального покупателя из за сессии.
0
|
|||
|
1152 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
|
||
| 11.10.2020, 15:45 | ||
|
1
|
||
|
Заблокирован
|
||
| 11.10.2020, 15:56 | ||
|
Добавлено через 4 минуты useruser, у сессии есть такой вот плюс: если курлом бот долбит страницу, на которой есть session_start() и ТУПО стоит проверка SID при отправке запроса, то курл не сможет её заспамить, то есть отправить запрос на возврат заголовков, взять оттуда SID и отправить с этим SID запрос не получится, так как при каждом curl_exec на той стороне будет новый SID для курла
0
|
||
| 11.10.2020, 15:56 | |
|
Зачем это используют зачем используют 2 read!!! Зачем используют конструкцию !()
Зачем используют сегментные регистры в Windows Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|