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

Тема в разделе "PHP", создана пользователем Smile, 19 янв 2011.

Модераторы: latteo
  1. Smile

    Smile

    Регистр.:
    12 ноя 2006
    Сообщения:
    157
    Симпатии:
    11
    Добрый день,

    есть скрипт работает с сессиями, сегодня заметил не правильную работу скрипта... при обращений к сайта к примеру:

    _http://www.site.ru/

    сессия есть и работает нормально.... а вот если юзер напишет тот же сайт но уже без www то сессий нету...

    помогите... как сделать чтоб была одна сессия без разницы как написан аддрес сайта... с www или без...
     
  2. propovednik

    propovednik Постоялец

    Регистр.:
    16 май 2008
    Сообщения:
    104
    Симпатии:
    21
    Либо создавать/удалять сессии всегда для обоих доменов (если вдруг есть поддомены, которые ты не контролируешь и не хочешь чтобы владельцы их получали доступ к твоим печеньям), либо при создании сессии указывать путь, либо редиректить на ввв через
    PHP:
    RewriteCond %{HTTP_HOST} !^www\.example\.com 
     
  3. Smile

    Smile

    Регистр.:
    12 ноя 2006
    Сообщения:
    157
    Симпатии:
    11
    как можно сделать чтоб сессии создавались / удалялись для обоих доменах ?
     
  4. steel_HILL

    steel_HILL Постоялец

    Регистр.:
    15 апр 2010
    Сообщения:
    53
    Симпатии:
    14
    Это неэффективно в плане поисковой оптимизации - даже Гугл при запросе на свой основной домен перенаправляет редиректом на домен с www...
    Но если уж очень нужно, то есть функция session_set_cookie_params() в которой можно задать домен для куки третьим параметром и соответственно прочитать через session_get_cookie_params(). Пример давать не буду, так как сама реализация зависит от расположения корневой папки сайта на сервере...
     
  5. r2d2

    r2d2 Писатель

    Регистр.:
    4 ноя 2006
    Сообщения:
    5
    Симпатии:
    0
    Для назначения одной сессии на все под домены можно задать такое свойстов в PHP.INI (точка обязательна)

    Код:
    session.cookie_domain = .example.com
    Но как по мне то метод с редиректом куда практичней.
     
  6. Miraage

    Miraage Angular/Laravel

    Регистр.:
    3 июн 2008
    Сообщения:
    230
    Симпатии:
    51
    совершенно верно

    PHP:
    ini_set('session.cookie_domain''.site.com');
    только это надо делать на стадии инициализации сессии (до запуска)
     
  7. ADyDyka

    ADyDyka Создатель

    Регистр.:
    19 янв 2010
    Сообщения:
    26
    Симпатии:
    5
    Домен задавать нельзя. Вернее можно но если вы указываете другой домен, чем тот с которого пришел запрос на установку кукисов это не сработает. Т.к. такие кукисы не примутся, это противоречит безопасности. Третий параметр служит для пути домена. Тоесть например можно кукисы установить только для какой то папки.