2009-08-03 3 views
4

Я пытаюсь понять работу форума IPB.состояние штата без печенья

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

Я пытаюсь работать, как это возможно, поскольку только файлы cookie, установленные сервером, истекают в конце сеанса, то есть когда я закрываю браузер. Итак, как сервер не может возобновить сеанс, не используя куки?

Редакция:

Редактирование: cookie id id сессии истекает в конце сеанса, и у меня установлен мой браузер для удаления файлов cookie в конце сеанса.

Это означает, что когда я закрываю свой браузер (сеанс заканчивается), файл cookie должен быть удален.

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

Вместо этого, если я открою свой оригинальный браузер, сессия возобновится.

Единственный другой набор файлов cookie - это cookie с именем pass_hash, срок действия которого истекает, как только он создается, и отправляется сервером каждый раз при загрузке страницы. Поэтому он не будет использоваться для аутентификации.

ответ

0

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

+0

Я не пропустил куки-файлы ... Я отслеживал их, когда они были созданы, и проверяя даты их истечения, чтобы попытаться понять. – 2009-08-03 02:16:37

1

Обычно файлы cookie сохраняются после закрытия браузера. Если вы используете PHP, ознакомьтесь с параметрами set_cookie's, или если вы используете сеансы, ознакомьтесь с областью session.

// Set Cookie 
setcookie($name, $value, $expire) 
// $expire is the time in seconds since Unix Epoch (see [time()][3]) it will stay alive 
// Session 
session_set_cookie_params($lifetime) 
// $lifetime is the seconds it will stay alive in seconds 
1

Информация о сеансе не обязательно уничтожается при закрытии окна браузера. Например, в PHP вы можете сохранить информацию о сеансе в базе данных, и вы можете сохранить это после закрытия браузера и завершения первоначального сеанса.

Еще один способ, которым я могу представить, - установить флажок в таблице Users, указав, что пользователь все еще зарегистрирован. Возможно, в таблице есть поле с именем logged_in, и вы можете установить его в true. Через определенное время [т. Е. Вы не вернетесь] он будет сброшен обратно на значение false.

+0

Если окно браузера закрывается, и для файла cookie сеанса установлено значение expire в конце сеанса, и cookie удаляется при закрытии моего браузера (завершение сеанса), означает ли это, если я открою сайт в другой браузер сеанс должен быть возобновлен? если нет, почему бы и нет? – 2009-08-03 02:18:16

+0

Возможно, так оно и работает. Они могут хранить сеанс вместе с вашим IP-адресом и временем, в которое вы вошли. Когда вы вернетесь, они могут проверить ваш IP-адрес, сопоставить его с именем пользователя и временем от последнего входа (ПРИМЕЧАНИЕ: если более 1 часа , требуется логин). Вы должны были бы удалить эти значения полей, когда пользователь выйдет из системы. – mlevit

+0

Почему сессия не возобновляется в другом браузере? – 2009-08-03 02:48:10

1

Есть несколько мест, которые могут скрывать информацию сеанса, отличную от файлов cookie.

ключ сеанса в URL (http://example.com/app/234348738790/main)

сеанс ключ в качестве переменной GET (? Sess = 257892345)

сеанса ключ в качестве переменной POST (типа входа = 'скрытых')

храните его в локальном хранилище в браузере

используйте javascript с любым из вышеуказанных способов, чтобы сообщить информацию о сеансе на сервер.

+0

Проблема, которую я имею в понимании того, как работает IPB, заключается в том, что ни один из этих методов не работает. Если это не отдельное скрытое хранилище javascript отдельно ... – 2009-08-03 06:31:21

3

Подкасткой альтернативой куки-файлам является временная метка с последним изменением изображения или другого объекта. Сервер может предоставить вам изображение, задающее метку времени, значение, которое идентифицирует ваш сеанс. Когда вы загружаете другую страницу, браузер отправляет if-modified-since timestamp и отдает вас.

+1

+1 для мышления вне коробки – mlhDev

2

Используйте браузер localStorage объект. Пример:

localStorage.setItem("lastname", "Smith"); 
var name = localStorage.getItem("lastname"); 
Смежные вопросы