Работа с сессиями в php

  • Автор темы Obitatelll
  • Обновлено
  • 09, Jun 2020
  • #1
Необходимо иметь представление, для чего вы можете использовать сессии, а где их использовать не стоит.

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

Ведь пользователь всегда сможет избавится от идентификатора.

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

Но вот чтобы ограничить количество запросов к скрипту использовать сессию уже не стоит, т.к. скрипт со злым намерением просто напросто не будет отсылать идентификатор.

Еще одно очень важно помнить, что сессия – это сеанс при работе с сайтом.

Зашли, поработали, закрыли браузер и все… на этом сессия заканчивается.

Это подобие сеанса в кино.

Хотите посмотреть еще раз или другое кино – купите новый билет.

Так и здесь, нужно запускать новый сеанс. Для этого есть и техническое объяснение.

Гарантия работы сессии существует только до момента закрытия браузера пользователем.

Ведь у пользователей может быть отключены cookies, в следствие чего, все ссылки, дополненные идентификатором исчезнут пои закрытии браузера.

Но сессия будет пропадать и не только после закрытия браузера.

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

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

По умолчанию это значение равно 24 мин.

Obitatelll


Рег
02 Feb, 2011

Тем
6299

Постов
10083

Баллов
41618
  • 08, Jun 2020
  • #2
Последние проблемы которые бывают в сессиях

Если ваш код не работает, то проблема скорее всего не связана с сессиями, а кроется в самом алгоритме.

Проверьте правильность переменных, возможно вы где-то утеряли переменную, отладьте свой скрипт.

Еще одной проблемой может стать использование перенаправления через навигацию или header при помощи Java-скриптов.

Проблема в том, что PHP сам дописывает автоматический идентификатор сессии только для ссылок вида , но не работает для ява-скриптов, мета-тегов и header-ов.

В этом случае необходимо добавить идентификатор руками:

 header("Location: /script.php?".session_name().'='.session_id());


Иногда также встречается проблема с настройкой session.save_handler.

Она имеет свое значение, которое отличается от files.

Если это не так – нужно исправить.

Дополнительная информация:

• Кроме куков, сессии посылают и заголовки, которые запрещают кэшировать страницы (cache limiter). В html это будет правильно и нужно.

Но если вы попытаетесь при помощи скрипта, проверяющего авторизацию, отдать файл, то браузер откажется скачивать его.

Чтобы решить данную проблему вы можете воспользоваться строкой:

 session_cache_limiter("private");
до старта сессии, скорее всего это решит вашу проблему.

• Как не странно, но использование числовых индексов $_SESSION[1], $_SESSION['10'] в массиве $_SESSION не рекомендуется, т.к. сессии не будут работать.

• В версиях 4.2 - 5.0 была запрещена установка session.use_trans_sid при помощи ini_set(), но начиная с 5-й версии это стало возможным.

• До PHP 4.3.3, скрипт отправлял cookies только когда старт сессии происходил без идентификатора в запросе.

Сейчас cookies отправляется каждый раз, когда вызывается session_start(). PHP код который устойчивый к ошибкам< Предыдущая Следующая >Сессии и cookies решения проблемы
 

Obitatelll


Рег
02 Feb, 2011

Тем
6299

Постов
10083

Баллов
41618
  • 24, May 2021
  • #3
Lletanew: PHP код можно переделать сразу и куки чекнуть их, если я не ошибаюсь
Да, это один из минусов, почти всё придётся переделывать.
 

Vetaveya


Рег
22 May, 2021

Тем
69

Постов
184

Баллов
569
  • 02, Jun 2021
  • #4
Vetaveya: Да, это один из минусов, почти всё придётся переделывать.
Не все, куски можно обрезать и некоторые оставить...
 

Anilindr


Рег
01 Jun, 2021

Тем
86

Постов
215

Баллов
645
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно