2009-08-19 2 views
0

Сессии начинаются с session_start(). Я понимаю, что много, но чтобы сеансы были постоянными, им нужен идентификатор.Быстрый вопрос о сеансах в PHP

Теперь файл php.ini имеет параметр:

session.use_cookies = 1 

Так что не должны пройти ID вокруг. Но есть еще одна установка:

; Lifetime in seconds of cookie or, if 0, until browser is restarted. 
session.cookie_lifetime = 0 

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

EDIT: поэтому, чтобы оставаться в системе, мне придется объединить это с куки-файлами на стороне клиента.

Я предполагаю, что мне понадобятся 2 поля базы данных. 1 для идентификатора сеанса, 1 для идентификатора, который я передаю файлу cookie.

ответ

2

Нет, вы больше не войдете в систему.

См. Мой ответ здесь: How do I Keep a user logged in for 2 weeks? (см. http://www.drupal.org/node/31506 для получения дополнительной информации о выполняемых задачах, если вы хотите, чтобы люди были выписаны через некоторое время). Это может помочь вам.

Проверьте строку агента пользователя (только для обеспечения безопасности). Если хакер каким-то образом обнаружил ключ, он может отправить фальшивый файл cookie и войти в систему автоматически. Для людей, которые переключают браузер один раз, они могут просто войдите снова после копирования файлов cookie. Однако это будет катастрофой для людей, которые изменяют или обновляют браузер без остановки).

+0

Спасибо. Планируемая задача, которую вы говорите. Раньше я не использовал никого из них, мне придется это посмотреть. – KdgDev

+0

Проверка IP? Не у всех (включая меня) есть статический IP-адрес. – KdgDev

+0

Является ли ваш внешний IP статическим? Я не знал, что это возможно. Или вы создаете сайт интрасети, который работает в одной сети? – 2009-08-19 16:27:25

0

Я бы сказал, да. Вы видите иначе?

+0

Так что, если я хочу, чтобы все еще был зарегистрирован, мне придется объединить это с куки-файлами на стороне клиента? – KdgDev

+0

@WebDevHobo: http://stackoverflow.com/questions/1290837/how-do-i-keep-a-user-logged-in-for-2-weeks/1290861#1290861 – 2009-08-19 16:11:46

2

Я думаю, вы понимаете это правильно, PHP руководство говорит:

session.cookie_lifetime определяет жизни куки в секундах , который отправляется в браузер. Значение означает «пока браузер не будет закрыт». По умолчанию 0.

http://php.net/session.configuration#ini.session.cookie-lifetime

0

да, то есть цель куки сессии.

Смежные вопросы