Золотая Коллекция Манимейкера Digitabs
Показано с 1 по 2 из 2

 

 

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

 

 



  1. Аватар для Goocoins

    Регистрация
    02.02.2011
    Сообщений
    21,970

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

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

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

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

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

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

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

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

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

    Для этого есть и техническое объяснение. Гарантия работы сессии существует только до момента закрытия браузера пользователем.

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

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

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

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

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



  2. Аватар для Goocoins

    Регистрация
    02.02.2011
    Сообщений
    21,970
    Последние проблемы которые бывают в сессиях
    Если ваш код не работает, то проблема скорее всего не связана с сессиями, а кроется в самом алгоритме.

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

    Еще одной проблемой может стать использование перенаправления через навигацию или 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 решения проблемы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •