Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
 Аватар для useruser
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100

Зачем используют сессии?

09.10.2020, 20:20. Показов 5345. Ответов 85
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Достаточно долгое время занимаюсь веб технологиями и PHP и до сих пор не могу понять зачем (не как, а зачем) используют сессии.

Опишу механизм сессии упрощенно
При сессии пользователю ставится cookie с идентификатором сессии (для PHP - PHPSESSID).
Вся информация пользователя, которую надо сохранить, сохраняется в файлах на сервере.
И при обращении пользователя, сервер читает идентификатор (PHPSESSID) и ищет файлы ассоциированные с этим идентификатором.
Фактически сессия - это куки на сервере.

Механизм кук более простой.
Вся информация пользователя, которую надо сохранить, сохраняется в файлах на компьютере пользователя (в файлах, называемых cookie). И оттуда же читается.

В чем проблема
Проблема в том, что срок жизни сессии устанавливается на сервере.
В связи с этим возникает множество неудобств
1) По умолчанию он 24 минуты.
2) Не всегда есть доступ к php.ini. (Обычный хостинг)
3) Максимальный срок жизни сессии 24 часа.

Моя задача, как программиста сделать использование сайта максимально удобным. Да и как пользователь я хочу чтобы мне было комфортно работать в интернете.

Часто возникает ситуация, что я авторизовавшись работаю с сайтом. И после закрытия браузера (или через определенное время) моя авторизация пропадает.
Нужно вводить данные снова. Это не удобно.
С куками, таких проблем, разумеется нет.

Зачем используют сессии, когда есть куки? Куки удобнее, проще, универсальнее.
Не будет "автовыхода" с сайта. Человек сам решит когда ему выйти. Не нужно настраивать сервер. Данные каждого человека хранятся на его компьютере (в его куках). Сплошные преимущества.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.10.2020, 20:20
Ответы с готовыми решениями:

Зачем в PHP сессии?
Всем привет! Интересный вопрос, не правда ли?) Часто слышу такое мнение, что сессии нужны для контроля авторизованности пользователей....

Зачем нужны сессии?
Прочитав около 20 статей о сессиях, так и не понял для чего они нужны. На практике. Разрабатываю веб-проекты на php около 3-4 лет и...

Зачем используют Eclipse?
Здравствуйте. Прочел, что часто как IDE используют eclipse. Какие преимущества и недостатки в этом? Спасибо.

85
 Аватар для sad67man
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
10.10.2020, 13:19
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Verolomstvo Посмотреть сообщение
в ларавеле видимо целая отдельная таблица для этого создана?
Хз, я не знаю Laravel.

Цитата Сообщение от Verolomstvo Посмотреть сообщение
оставляя ВСЕГДА только ОДНО залогиненное устройство)))
Нужно, чтоб я мог иметь несколько залогиненых устройств.
0
Заблокирован
10.10.2020, 13:27
Цитата Сообщение от sad67man Посмотреть сообщение
Нужно, чтоб я мог иметь несколько залогиненых устройств.
ага и находясь на одной и той же странице долбить одну и ту же кнопку сразу со всех)))

давай-давай)))

здравствуйте курло-боты с разных устройств НА ОДНОМ аккаунте, даже не нужно представляться каждому отдельно, залогинились под одного и понеслась
0
 Аватар для sad67man
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
10.10.2020, 13:34
Verolomstvo, Зависит от ситуации, к примеру в VK я могу зайти с телефона, с домашнего и рабочего компа. А вы предлагаете, чтоб меня постоянно разлогиневало?
0
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,954
10.10.2020, 13:41
Цитата Сообщение от useruser Посмотреть сообщение
И что из этого? Сессия истекла - пользователю надо заново залогиниться. Это не удобно.
Можно сказать - что если злоумышленник захватит устройство, то он сможет на нем работать 24 минуты (стандартное время сессии).
В то время как с кукой - постоянно (то что срок жизни он продлит даже не обсуждаем).
Но можно легко реализовать механизм "выйти из под всех устройств". Что часто и делается во многих проектах.
Все эти вопросы безопасности уже давно решены двухэтапной аутентификацией.
Видимо, вы совсем не разбираетесь в защите. При активности пользователя сеанс продлевается. Смысл в том, чтобы "злоумышленник" не подобрал ключ авторизации по крайней мере тогда, когда пользователь полностью пассивен. При долгой активности ключ тоже может меняться. И перестаньте уже сравнивать несравнимые вещи. Вам выше написали про абсурдность сравнения кук и PHP-сессий. Сравнивать авторизацию с двухэтапной или двухфакторной аутентификацией еще абсурднее.

Добавлено через 4 минуты
Грамотно реализованная авторизация на куках точно так же работает, только здесь вы можете параметрами управлять без использования директив PHP и т.п.
0
Заблокирован
10.10.2020, 13:48
Цитата Сообщение от sad67man Посмотреть сообщение
А вы предлагаете, чтоб меня постоянно разлогиневало?
ДА!!!

И потом ты не отмажешься, что спамил ребёнок с домашнего ПК, потому что ты был на работе и сидел с ТЕЛА, потому что я так сделал, что можно сидеть с разных сразу

Не должен пользователь сидеть на сайте с нескольких устройств.

Вот так это делается ПРИМЕРНО

PHP
1
2
3
4
5
6
7
8
9
10
11
12
public static function get()
{
    if (isset($_SESSION['id_token'])) {
        [$id, $token] = explode(':', $_SESSION['id_token']);
        $user = self::findOne($id);
        if ($user and $user->token == $token) {
            return $user;
        }
        unset($_SESSION['id_token']);
    }
    return null;
}
0
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,954
10.10.2020, 13:49
Цитата Сообщение от Verolomstvo Посмотреть сообщение
Не должен пользователь сидеть на сайте с нескольких устройств.
Почему?
0
Заблокирован
10.10.2020, 13:50
estic, я за сессии
0
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,954
10.10.2020, 13:52
Можно использовать общий ключ для нескольких устройств, тогда отдельная таблица для ключей не нужна

Добавлено через 1 минуту
Цитата Сообщение от Verolomstvo Посмотреть сообщение
я за сессии
За сессии по сравнению с чем? Или вы за ограничения сессий? Так можно организовать еще большие ограничения и без них
0
Заблокирован
10.10.2020, 13:57
Цитата Сообщение от estic Посмотреть сообщение
Почему?
А для чего мне у себя на сайте держать в логине несколько устройств, если активность идёт с одного?
0
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,954
10.10.2020, 14:01
Цитата Сообщение от Verolomstvo Посмотреть сообщение
А для чего мне у себя на сайте держать в логине несколько устройств, если активность идёт с одного?
Речь о возможности одновременно работать с нескольких устройств. Если вы не хотите использовать отдельный ключ для каждого устройства, можно использовать общий для всех устройств пользователя, о чем я выше написал.
0
Заблокирован
10.10.2020, 14:02
Цитата Сообщение от estic Посмотреть сообщение
Можно использовать общий ключ для нескольких устройств, тогда отдельная таблица для ключей не нужна
гениально: мы отказались от кукисов, так как не хотим передавать подсмотренный в браузере токен на другое устройство и просто сделали общий ключ для всех устройств

вот Вам и ответ, почему не нужно держать залогиненными несколько устройств КАКОЙ СМЫСЛ В ТОКЕНЕ ТОГДА, если его можно сделать общим для всех устройств, зачем тогда на каждом устройстве заводить ТОКЕН, зачем ТОКЕН ВООБЩЕ?

Добавлено через 40 секунд
во дают
0
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,954
10.10.2020, 14:03
Цитата Сообщение от Verolomstvo Посмотреть сообщение
мы отказались от кукисов
Кто мы?
0
Заблокирован
10.10.2020, 14:05
Цитата Сообщение от estic Посмотреть сообщение
Кто мы?
аааааа, так мы сидим под кукисами да ещё и общий ключ создаём браво)))
0
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,954
10.10.2020, 14:11
Как вы "отказались от кукисов"? Детский сад.

Добавлено через 5 минут
Вариант использования сессий без кук даже рассматривать не нужно.
0
 Аватар для sad67man
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
10.10.2020, 14:11
Цитата Сообщение от Verolomstvo Посмотреть сообщение
Не должен пользователь сидеть на сайте с нескольких устройств.
Однако сидят, и большинство сайтов работают именно так.
С точки зрения бизнеса, если у вас интернет магазин, главное, чтоб пользователи делали заказы, хоть с 10 устройств, если им так удобно.
Другое дело, если у вас какая-нибудь онлайн игра, когда вам технически необходимо, чтоб с одного аккаунта был только один игрок. И то даже в таком случае можно не разлогинивать пользователя, чтоб каждый раз не приходилось вводить логин/пароль, а придумать какую-нибудь систему блокировки.
0
Заблокирован
10.10.2020, 14:14
Цитата Сообщение от estic Посмотреть сообщение
Как вы "отказались от кукисов"?
легко

PHP
1
2
3
// логинимся - ПРИМЕР
$user = User::signin($login, $password, $token); // проверили, присвоили токен, записали (UPDATE), вернули данные
$_SESSION['id_token'] = $user->id . ':' . $user->token; // сессионная пара id:token для контроля авторизованного
0
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,954
10.10.2020, 14:17
Verolomstvo, сам механизм сессий в 99,9% случаев использует куку
0
Заблокирован
10.10.2020, 14:20
Цитата Сообщение от sad67man Посмотреть сообщение
придумать какую-нибудь систему блокировки
у меня стоит просто токен на нажатие кнопки, js при нажатии кнопки подкидывает в тег button токен ДЛЯ КНОПКИ (не сессионный), токен проверяется на бэке и при прохождении проверки ГЕНЕРИРУЕТСЯ НОВЫЙ, то есть токен КНОПКИ одного устройства не совпадёт с другим, а так же не совпадёт при пролистывании страниц на девайсах (свайпе)

а зачем тебе сразу с нескольких устройств делать заказы в магазине?

Ты хочешь быть залогиненным на ПК и на телефоне, выйти погулять, а вернувшись домой обнаружить, что тебе Танк выслали уже или вагон памперсов ты купил, потому что кошка лазила по клавиатуре, а ты залогинен был?
0
 Аватар для sad67man
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
10.10.2020, 14:29
Цитата Сообщение от Verolomstvo Посмотреть сообщение
а зачем тебе сразу с нескольких устройств делать заказы в магазине?
В данном случае вы должны ориентироваться на конечного пользователя. Вы не должны спрашивать его зачем? ему лучше знать. Если возможность заходить с нескольких устройств увеличивает продажи, то значит, что так лучше для бизнеса, и вы должны предоставить такую возможность.

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

Ваш способ тоже рабочий. Еще раз говорю, все зависит от требований, а не от пожелания разработчика.
0
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,954
10.10.2020, 14:31
Verolomstvo, кошка может погулять и по единственному устройству, если его оставлять где попало в "заряженном" состоянии и при этом где-то шляться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.10.2020, 14:31

Зачем это используют
Хотел бы узнать зачем используют вот такую работу с памятью в SQL запросах Connection* iconn = SQLPool.GetConnection(); ...

зачем используют 2 read!!!
вот часть кода! begin read(f,i); read(f,i); readtable(t,e1,i); read(f,i); y:=getz(f,t); e1.inf:=e1.inf-y; ...

Зачем используют конструкцию !()
например var isFirefox = ! ! ( navigator . vendor && navigator . vendorSub ) ; зачем !! - отрицание отрицания... мы таким образом...

Зачем придумали и используют массивы?
Здравствуйте , уважаемые члены форума ! У меня глупый вопрос , зачем придумали и используют массивы ?

Зачем используют сегментные регистры в Windows
Вот например кусок кода: .data? CurrDir db MAX_PATH dup (?) buff db 4 * 3 dup (?) .code start:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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 и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru