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

Wmlogs

Администратор
Регистрация
02.02.11
Сообщения
9.315
Реакции
0
Баллы
56
Необходимо иметь представление, для чего вы можете использовать сессии, а где их использовать не стоит.
Для начала усвойте, что сессии можно применять только в тех случаях, когда они необходимы самому пользователю, а не для того, чтобы осложнять ему действия.
Ведь пользователь всегда сможет избавится от идентификатора.
Допустим, чтобы произвести проверку на то, что форма заполняется именно человеком, а не скриптом, у самого пользователя появляется заинтересованность в том, чтобы сессия корректно работала, т.к. в противном случае он не сможет отправить форму.
Но вот чтобы ограничить количество запросов к скрипту использовать сессию уже не стоит, т.к. скрипт со злым намерением просто напросто не будет отсылать идентификатор.
Еще одно очень важно помнить, что сессия – это сеанс при работе с сайтом.
Зашли, поработали, закрыли браузер и все… на этом сессия заканчивается.
Это подобие сеанса в кино. Хотите посмотреть еще раз или другое кино – купите новый билет. Так и здесь, нужно запускать новый сеанс.
Для этого есть и техническое объяснение. Гарантия работы сессии существует только до момента закрытия браузера пользователем.
Ведь у пользователей может быть отключены cookies, в следствие чего, все ссылки, дополненные идентификатором исчезнут пои закрытии браузера.
Но сессия будет пропадать и не только после закрытия браузера.
Механизм сессий сам не в состоянии определить момент, когда был закрыт браузер.
Для этого был введен таймаут – заранее установленное время, через которое в результате неактивности считается что пользователь покинул сайт.
По умолчанию это значение равно 24 мин.
 

Wmlogs

Администратор
Регистрация
02.02.11
Сообщения
9.315
Реакции
0
Баллы
56
Последние проблемы которые бывают в сессиях
Если ваш код не работает, то проблема скорее всего не связана с сессиями, а кроется в самом алгоритме.
Проверьте правильность переменных, возможно вы где-то утеряли переменную, отладьте свой скрипт.
Еще одной проблемой может стать использование перенаправления через навигацию или header при помощи Java-скриптов.
Проблема в том, что PHP сам дописывает автоматический идентификатор сессии только для ссылок вида <a href=>, но не работает для ява-скриптов, мета-тегов и 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 решения проблемы
 

Статистика форума

Темы
200.635
Сообщения
380.523
Пользователи
327.876
Новый пользователь
pm1199
Сверху Снизу