Автор Тема: Сессии, кукиши и авторизация  (Прочитано 6359 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн storm2k

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 1
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.lebedev.tk/
Сессии, кукиши и авторизация
« : 05 Февраля 2004, 02:10:10 »
Значит я тут немного запутался с сесиями. Сессия храниться до тех пор пока открыто окно браузера???
Просто тут столкнулся со следующей проблемой, есть некий скрипт авторизации пользователей.
В общем юзеры проходят регистрацию, все введенные данные хрянтся в неком массиве, который в свою очередь храниться в сессии. Но проблема в том, что мне никак не обраться к сессии после закрытия окна браузера. Т.е. допусти что при регистрации у человека виснит комп, он его перезагружает и ему снова приходиться вводить все данные сначала. Так и должно быть, или у меня ркуи кривые... Можно конечно все еще хранить и в кукишах...
Подскажите где можно об этом поподробнее почитать... или просто так на пальцах расскажите...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Сессии, куки и авторизация
« Ответ #1 : 05 Февраля 2004, 11:39:57 »
Цитировать
Сессия храниться до тех пор пока открыто окно браузера???

совершенно верно

я только не понял, зачем хранить данные в сессии, вместо того, чтобы их записать в базу, и почему при регистрации у твоих юзеров компы зависают. Ты им вирусы рассылапешь что ли?

Оффлайн D1g174LM4n14c

  • 1m
  • Постоялец
  • ***
  • Сообщений: 137
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Сессии, куки и авторизация
« Ответ #2 : 05 Февраля 2004, 15:44:20 »
[OFF]Меня за**ало что ты мои сообщения трешь напостой без пояснений. Я ведь дело говорю! И про кукисы, и про сессии, и даже про хранение данных на форуме (тема "Проблемы с написанием собственного форума"). ОБЪЯСНИ![/OFF]
Мы такие!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Сессии, куки и авторизация
« Ответ #3 : 05 Февраля 2004, 19:01:53 »
Цитировать
Я ведь дело говорю!

Ты себе льстишь.
Когда напишешь по делу, я не буду стирать.

Подходи к написанию ответов более вдумчиво.
Можешь сначала мне приватом писать. Лично тебе я объясню, в чем ты неправ. а в чужой теме я этого делать не буду - флейм разводить. Мне проще стереть.

Оффлайн Polar

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.polar-lights.com
Сессии, куки и авторизация
« Ответ #4 : 08 Февраля 2004, 03:02:53 »
Цитировать
RomikChef:
Сессия храниться до тех пор пока открыто окно браузера???
совершенно верно


Кстати по-моему совершенно необязательно :) Сессионные данные на сервере могут и дольше храниться :) и все зависит от значения session.gc_maxlifetime в php.ini. Просто обычно там же пишут session.cookie_lifetime = 0 и кука сессионная ставится без указания времени жизни и живет только до тех пор пока открыто текущее окно браузера. Т.е. первый вызов session_start(); или попытка что-нибудь записать в сессию инициирует выдачу заголовка типа

Set-Cookie: PHPSESSID=b9118d27f8abb0337a87b447daa2cc12; path=/

(где PHPSESSID это значение по умолчанию session.name в php.ini)
и первую и вторую чать этого выражения легко определить в скрипте. Например session_name(); вернет строку "PHPSESSID", а session_id(); вернет строку "b9118d27f8abb0337a87b447daa2cc12".
Ну и поскольку при выдаче подряд двух заголовков Set-Cookie более высокий приоритет имеет переданный последним, никто не мешает нам продлить время жизни куки даже не трогая ini_set :)
Например на 10 минут:

session_start();
header("Set-Cookie: ".session_name()."=".session_id()."; expires=".gmdate ("l, d-M-y H:i:s", (600+time()))." GMT; path=/;");

При таком раскладе сессионная кука будет передаваться на сервер после закрытия и открытия заново браузера и если сессионные данные на сервере живы (а живут они обычно вроде бы 24 минуты по умолчанию ?), то все получится :)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Сессии, куки и авторизация
« Ответ #5 : 08 Февраля 2004, 07:33:06 »
Polar, а теперь скажи мне, что будет, если я живу , скажем, в казани, а сервер, в москве?
и кука экспайрится, к примеру, в 12-00, а у меня уже 12-30, и при этом я тольо зашел на сайт?

скажи мне, так же, сработает ли этот механизм, если куки отключены?

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

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

Оффлайн Polar

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.polar-lights.com
Сессии, куки и авторизация
« Ответ #6 : 08 Февраля 2004, 11:23:30 »
RomikChef :)
Вообще конечно все это звучит по меньшей мере смешно и крайне неубедительно, но спорить не буду :-)
Просто советую почитать спецификацию на заголовок Set-Cookie, обратить внимание на "GMT" в той строчке кода и проверить как это работает в реальной жизни :-) А если куки отключены никто не мешает это проверять и передавать идентификатор сессии гетом :-)  
И хотя я тоже не вижу зачем это может пригодиться, но человек спросил, а отвечать однозначно и неверно-то зачем? :)
PS Если на клиенте часы стоят неправильно, то конечно может не сработать, но и с неправильно установленными часами можно бороться используюя комбинацию яваскрипта и пхп :-)
PPS Иногда заказчики "реальных программ" хотят очень странных вещей, а наше дело не рассуждать о невозможности, а искать пути разрешения :-)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Сессии, куки и авторизация
« Ответ #7 : 08 Февраля 2004, 12:02:46 »
про GMT протупил, действительно.
имел в виду сбитое время.
и, в первую очередь - неуниверсальность подхода.
механизм сессий гарантирует некий функционал. если соблюдать ограничения.

про яваскрипт - это уже детский лепет.

Цитировать
никто не мешает это проверять и передавать идентификатор сессии гетом

замечательно.
только ты совсем забыл о чем речь.
я тебе напомню.
Цитировать
Polar:
При таком раскладе сессионная кука будет передаваться на сервер после закрытия и открытия заново браузера и если сессионные данные на сервере живы (а живут они обычно вроде бы 24 минуты по умолчанию ?), то все получится :)

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

Цитировать
Polar:
отвечать однозначно и неверно-то зачем?

чтобы человек не пповторял твою ошибку, и правильно понимал смысл сеанса. закрыл браузер? СЧИТАЙ что данные в сессии пропали.
я ответил однозначно и верно.
СЕАНС работы с сайтом - это пока ты с ним работаешь.
Закрыл окно - кончился сеанс.Неважно, сам закрыл или комп завис.
Мне жаль тех, кто не понимает этой простой вещи и тужится растопырить сессии в несвойственную им позу вместо того, чтобы применять каждый механизм на своем месте.

если
Цитировать
Polar:
заказчики хотят

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

Резюме.
Ответил я не истину, но правильно и однозначно.
Именно однозначно.
А вот в твоем случае однозначности как раз и нет.

А дурной заказчик никак не может быть оправданием дурака-девелопера, мой друг.

Оффлайн Polar

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.polar-lights.com
Сессии, куки и авторизация
« Ответ #8 : 08 Февраля 2004, 13:35:42 »
да :) точно - насчет гета это и я ступил :-)
но все равно большинство вещей пишутся под включенные куки :-)
Насчет лепета, явасрипта и неправильных часов на клиенте есть древний способ - в заголовке html кода прямо на первой странице пишем например



в clienttime.php убираем три последних цифры у $_GET["t"], сравниваем полученную цифру с time() на сервере и записываем разницу в сессии. Ну а потом зная эту разницу легко поставить куку на точно заданное время именно по часам на клиентской машине.

Кроме того :-) не нам судить о целях и "правильности" :) Вариантов в жизни бывает очень много и "правил" на все варианты не напасешся, а ответ "нельзя" это совсем не то, что "можно, но не стоит" :)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Сессии, куки и авторизация
« Ответ #9 : 08 Февраля 2004, 13:52:20 »
и, все-таки, для понимания самого понятия сессии, для того, чтобы не было проблем с их работой, лучше считать, что данные пропали. Есть окно - сеанс. Нет окна - сеанс вышел.
механизм сессий и сам по себе не фонтан, не надо его делать еще более громоздким и неуправляемым.

Цитировать
Polar:
не нам судить

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

Оффлайн Polar

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.polar-lights.com
Сессии, куки и авторизация
« Ответ #10 : 08 Февраля 2004, 14:02:50 »
Вот :-) Теперь совершенно другое дело и совершенно согласен :-)
И не буду записывать :-)
PS Хотя это скорее всего пройдет со временем :-) Я тоже лет 5-6 назад считал что "достаточно разбираюсь" во многих вещах, но надеюсь уже переболел :-)
И все :-) Не бейте сильно - флудить завязал :-)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Сессии, куки и авторизация
« Ответ #11 : 08 Февраля 2004, 14:20:52 »
у меня уже не пройдет.
тысяч 20 ответов на форумах позволяют сделать некоторые статистические выводы :-)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28