Куки и сессии, как они взаимосвязаны?

Тема в разделе "PHP", создана пользователем sultan347, 28 май 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. sultan347

    sultan347

    Регистр.:
    25 апр 2009
    Сообщения:
    230
    Симпатии:
    7
    Добрый вечер.
    Пытаюсь понять их...
    Куки, это текстовые файлы, размещенные в компьютре в директории Documents and Settings\User\Local Settings\Temporary Internet Files
    Вот, например куки моего сайта:
    Код:
    PHPSESSID
    ba628thj1530e1961c279ca8df578432
    www.site.ru/
    2647
    1412060160
    30006790
    1508897472
    30006593
    *
    
    А сессии что такое? Из http://php.spb.ru/php/session.html: Сессия - 128 битное число. Если юзер пришел на сайт впервые, пхп видит это, и присваивает случайное число. Там написано, что оно хранится в сервере где то файле.
    Ну и вопрос, как они связаны между собой?
     
  2. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
  3. upandhigh

    upandhigh

    Регистр.:
    11 фев 2009
    Сообщения:
    235
    Симпатии:
    89
    если вкратце то сессии хранятся на стороне СЕРВЕРА, а кукисы как ты уже сказал хранятся на стороне КЛИЕНТА. т.е. нужно тебе сохранить информацию о пользователе ты можешь ее положить в сессию, когда прийдет юзер на сайт сново ты по ИД сессии востановишь данные которые хранятся у ТЕБЯ на сервере касат, касательно этого юзверя и будешь их юзать - в твоем примере это счетчик 128 - а кукисы хранятся на стороне клиента - когда человек приходит на сайт он шлет тебе на сервер инфу, типа в прошлый раз ты у меня сохранил то и то, вот на возьми и сервер востанавливает эту инфу которую получает он от клиента.
     
  4. noiz

    noiz Создатель

    Регистр.:
    9 апр 2009
    Сообщения:
    16
    Симпатии:
    1
    идентификатор сессии может храниться в куках (и чаще всего там хранится) - вот такая между ними связь
     
  5. Ceyce

    Ceyce Постоялец

    Регистр.:
    3 ноя 2008
    Сообщения:
    52
    Симпатии:
    51
    Куки - файлы на стороне клиента.
    Сессии - файлы на стороне сервера.

    К какому пользователю какая сессия относится, определяется по id сессии, который записывается пользователю в куки.
     
  6. sultan347

    sultan347

    Регистр.:
    25 апр 2009
    Сообщения:
    230
    Симпатии:
    7
    вообщем у меня 4 сайта, 3 которых написано с руки, 1 инет-магазин shopcms. Сервер один, а ведут себя по разному. Осн проблема - сессии долго не сохраняются, если полчаса после авторизации остаешся не активным в сайте, вышибает из аккаунта. Хотя из моего примера видно, что в куки записывается идентификатор сессии:
    Код:
    PHPSESSID
    ba628thj1530e1961c279ca8df578432
    www.site.ru/
    2647
    1412060160
    30006790
    1508897472
    30006593
    *
    Здесь 1,2 строка понятно как раз идентификатор сессии, 3 строка - домен сайта, а вот 4-8 для чего? 9-звездочка наверно означает конец.

    Мог бы предположить, что сервер убивает сессию, но с инет-магазином все в порядке, один раз авторизовался, потом всегда автоматически входить...:nezn:
     
  7. SASS_

    SASS_ Постоялец

    Регистр.:
    15 мар 2009
    Сообщения:
    61
    Симпатии:
    2
    Сервер убивает сессию - но это настраиваемо, можно продлить или уменьшить время этой самой сессии. Можно настроить и так, что сессия убивается когда юзер уходит.

    Сессии - если нужно хранить краткосрочную инфо о юзере и его действиях (например когда в интернет магазине человек ложит что либо себе в корзину)
    Кукисы - когда нужно хранить информацию о юзере долго ( например на форуме, чтобы когда человек приходил он был уже залогинен автоматом)

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

    имхо, что написано в самом файле кукиса понимать незачем, нужно понимать как оно работает и как с ними работать ;)

    а в принципе, чисто логически можно догадаться что в них хранится идентификатор и переменные :p
     
  8. sultan347

    sultan347

    Регистр.:
    25 апр 2009
    Сообщения:
    230
    Симпатии:
    7
    смотрел php.ini
    Там, параметр
    Код:
    session.cookie_lifetime = 84600
    session.gc_maxlifetime = 84600
    , то есть это почти сутки, а так в реале сессии хватает на полчаса, что-то нето. Зато
    Код:
    ;session.save_path = "/tmp"
    закоментирован. Может из-за этого вообще не пишется в сервере? Как наз-ся файл сессии на сервере, и где он примерно лежит, чтобы убедится, что они на самом деле есть и попытатся сравнить с куками?
     
  9. sultan347

    sultan347

    Регистр.:
    25 апр 2009
    Сообщения:
    230
    Симпатии:
    7
    в сервере в php.ini параметры
    Код:
    session.cookie_lifetime = 5000000
    session.gc_maxlifetime = 5000000
    
    и в скрипте в setcokie время действия куки тоже
    Код:
    time()+5000000
    по 5 млн поставил. Посмотрим. Только так правильно? В некоторых местах пишут, что максимально можно только 604800....
     
  10. SASS_

    SASS_ Постоялец

    Регистр.:
    15 мар 2009
    Сообщения:
    61
    Симпатии:
    2
    Я в этом вопросе больше теоретик :(

    Время сессии можно указать в самом пхп коде, а то что в php.ini это наверно то что по дефаулту - если не указано в самом пхп коде.
    Хотя... может есть и лимит :|

    Возник вопрос, а зачем собственно вам так интересно узнать что значат циферки и буковки в самом файлике, в котором хранится инфа о сессии?
     
Статус темы:
Закрыта.