|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
|
Зачем используют сессии?09.10.2020, 20:20. Показов 5435. Ответов 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
|
||
|
1462 / 1015 / 232
Регистрация: 01.10.2018
Сообщений: 3,965
|
||||
| 10.10.2020, 17:30 | ||||
Появляется зависимость от рабочего каталога. Программные файлы не должны от этого зависеть.Не разводите оффтоп. Т.е. на это сообщение лучше не отвечать.
0
|
||||
|
Заблокирован
|
|||
| 10.10.2020, 17:41 | |||
![]() какая зависимость? ![]() мы каталог сменили и вместо require dirname(__DIR__) . '/путь'; пишем просто ВЕЗДЕ В ЛЮБОМ МЕСТЕ СКРИПТА require 'путь'; магия ![]() потом смотрим в регене скрипт полсекунды вместо одной тысячнойсуперпрограммист я так думаю потерялся в своём симфони, помешался на ООП и решил что вызов интерпретатора работает как синглтон и можно одну и ту же функцию юзать без затрат, интерпретатор же уже вызвали ![]() ну это всё лирика, но return dirname(__DIR__) в методе getProjectDir() - это было круто
0
|
|||
|
1462 / 1015 / 232
Регистрация: 01.10.2018
Сообщений: 3,965
|
|
| 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
|
||
|
1462 / 1015 / 232
Регистрация: 01.10.2018
Сообщений: 3,965
|
||
| 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
|
|
|
1462 / 1015 / 232
Регистрация: 01.10.2018
Сообщений: 3,965
|
|||
| 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
|
|||||||
|
1462 / 1015 / 232
Регистрация: 01.10.2018
Сообщений: 3,965
|
|
| 10.10.2020, 18:18 | |
|
Verolomstvo, я вам уже один раз про chdir для 'vendor/autoload' и т.п. написал. Оставьте рабочий каталог для обрабатываемых файлов. Если не можете обойтись без относительных путей для программных файлов, используйте include_path (set_include_path). Другие могут.
0
|
|
|
Заблокирован
|
|
| 10.10.2020, 18:19 | |
|
0
|
|
|
1462 / 1015 / 232
Регистрация: 01.10.2018
Сообщений: 3,965
|
||
| 10.10.2020, 18:28 | ||
Мне, например, очень весело наблюдать за вашими в подавляющем большинстве случаем необоснованными претензиями
0
|
||
|
Заблокирован
|
||||||||||||||||||
| 10.10.2020, 18:38 | ||||||||||||||||||
![]() но нам этого мало
![]()
ещё для крутизны можно __DIR__ переопределить
0
|
||||||||||||||||||
|
3901 / 3238 / 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|