Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Очистка сессии при закрытии браузера
Форумы портала PHP.SU » » Вопросы новичков » Очистка сессии при закрытии браузера

Страниц (2): [1] 2 »
 

1. keysi_ - 24 Апреля, 2014 - 21:04:43 - перейти к сообщению
Вот такой код;


Установил значение $_SESSION['login']=1
Закрываю браузер. открываю, сессия на месте!

Я всегда думал что сессия должна умирать при закрытии браузера, но она ни куда не делась.
Я что то не понимаю или так и должно работать?
2. Строитель - 24 Апреля, 2014 - 21:20:45 - перейти к сообщению
keysi_ пишет:
Вот такой код;


Установил значение $_SESSION['login']=1
Закрываю браузер. открываю, сессия на месте!

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


3. keysi_ - 24 Апреля, 2014 - 21:33:51 - перейти к сообщению
Строитель, не, ну я понимаю что сессию можно убить вручную, можно даже так:
PHP:
скопировать код в буфер обмена
но это не подходит, так как речь идёт о том, чтобы сессия умирала про закрытии браузера.

Подозреваю, что где то косяк с сервером, но не могу найти какой параметр отвечает за смерть сессии.
4. Строитель - 24 Апреля, 2014 - 21:48:10 - перейти к сообщению
keysi_ пишет:Строитель, не, ну я понимаю что сессию можно убить вручную, можно даже так:
но это не подходит, так как речь идёт о том, чтобы сессия умирала про закрытии браузера.

Подозреваю, что где то косяк с сервером, но не могу найти какой параметр отвечает за смерть сессии.


http://habrahabr[dot]ru/post/28418/
5. LIME - 24 Апреля, 2014 - 23:52:18 - перейти к сообщению
keysi_ подозреваю что ты каждый раз перед проверкой ее устанавливаешь
(Добавление)
смотри в инструменте разработчика SID
если после рестарта браузера он не изменился значит проблема в настройках
6. Stierus - 25 Апреля, 2014 - 00:09:20 - перейти к сообщению
идентификатор сессии хранится в куке, настрой время жизни сессионной куки как тебе нужно и проблема решится
7. keysi_ - 25 Апреля, 2014 - 00:57:23 - перейти к сообщению
Народ, в общем проблема приняла неожиданный оборот! Решение под цитатами.

LIME пишет:
keysi_ подозреваю что ты каждый раз перед проверкой ее устанавливаешь

Нет, конечно. Это же глупо :)

LIME пишет:
(Добавление)
смотри в инструменте разработчика SID
если после рестарта браузера он не изменился значит проблема в настройках

Настройки Apache перелопатил все. Браузеру пофиг.

Stierus пишет:
идентификатор сессии хранится в куке, настрой время жизни сессионной куки как тебе нужно и проблема решится

Тоже уже стал подумывать в этом направлении, как о единственном выходе. Но так как я точно знаю, что кука отвечающая за сессию должна умереть не зависимо от настроек времени жизни cookes я решил идти до конца.

Итак, я полазил в интернетах и хабрах, оказывается много где люди задают такой вопрос, и их либо не понимают и обзывают косорукими, либо вопросы остаются без ответов. На одном из форумов человек предположил решение проблемы (очень замудрённо и на англиском). Попробую сейчас расставить всё точки над i.


Итак, дело исключительно в браузерах семейства Chrome! Они совсем НЕ ОБНОВЛЯЮТ PHPSESSID на всех сайтов, если в настройках браузера стоит галочка: "Продолжать работу с того же места".
Я бы ещё понял касательно открытых, но это относится и к тем сайтам, которые были закрыты пользователем перед закрытием браузера! Подозреваю, также, что галочка "разрешить использовать браузер в фоновом режиме" (по умолчанию включена) работает точно также, а там гляди google ещё что нибудь этакое придумает.


Внимание! Поясню, как эта проблема важна для пользователей сайта. Не убиваемая сессия означает, что галочка в форме авторизации любого сайта "чужой компьютер/не запоминать" (запрет на сохранение куков) из за этой фишки также НЕ СРАБОТАЕТ. А значит, вместо привычного обновления сессии после закрытия браузера, на чужом устройстве - останутся все ваши данные сессии. Поэтому при использовании Хрома всегда нажимайте "выход" чтобы сбросить сессию средствами сайта, а для надёжности, можно ещё удалять за собой данные сессии вручную или вообще использовать режим "инкогнито".

Вот такая вот фича-баг.
Кому не жалко, принимаю "спасибы" за полезное наблюдение.
8. Stierus - 25 Апреля, 2014 - 15:30:37 - перейти к сообщению
еще раз
Цитата:
Я всегда думал что сессия должна умирать при закрытии браузера

Не должна, в этом и смысл куки

1) окрой свой браузер, открой панель управления куками и удали PHPSESSID(вроде, так она по дфолту называется). Если после этого сессия все еще останется - тогда я с тобой согласен, проблема есть.
2) попробуй выставить абсолютно любой куке время жизни до закрытия окна, закрой окно, открой снова и попробуй к ней обратиться, если кука будет доступна - это тоже проблема.

Все остальное - демагогия Улыбка
9. LIME - 25 Апреля, 2014 - 18:05:33 - перейти к сообщению
Stierus как можно было сказать о времени сессионной куки?
ее время сессия
стыдно товарищ)
10. Stierus - 28 Апреля, 2014 - 13:08:21 - перейти к сообщению
LIME, ты о чем сейчас? Есть сессия, у нее есть id, есть кука, которая хранит id этой сессии - сессионная кука. Сессионная кука ничем не отличается от любой другой, как и не привязана к сессии пользователя в браузере. Выставил год время жизни этой куки - она будет жить год, сколько бы ты не закрывал окно браузера.

Хоть в php.ini выставляй время жизни куки http://www.php.net/manual/ru/ses...onfiguration.php (session.cookie_lifetime)
Хоть прям из php задавай http://ru2.php.net/manual/en/fun...ookie-params.php


Может, я не понял иронии, но новички ее не поняли бы тем более.
11. esterio - 28 Апреля, 2014 - 13:15:54 - перейти к сообщению
насколько я знаю, если задать время жизни равным 0, то она считаеться сессионной. тоесть если пользователь закрыл браузер ее больше не должно быть. удаляеться она или просто не отправляеться это уже не описано, но то что ее не должно быть прямо описано в спеке
http://www[dot]w3[dot]org/Protocols/rfc2109/rfc2109
Цитата:
The Max-Age attribute defines the lifetime of the
cookie, in seconds. The delta-seconds value is a decimal non-
negative integer. After delta-seconds seconds elapse, the client
should discard the cookie. A value of zero means the cookie
should be discarded immediately
12. Stierus - 28 Апреля, 2014 - 13:22:02 - перейти к сообщению
И как это противоречит тому, что написал я выше?
13. esterio - 28 Апреля, 2014 - 13:25:00 - перейти к сообщению
Stierus пишет:
еще раз
Цитата:
Я всегда думал что сессия должна умирать при закрытии браузера

Не должна, в этом и смысл куки

Я это имел ввиду. точнее тот факт если жизнь кукы установлено в 0, то после закритии браузера ее не должно быть
14. Stierus - 28 Апреля, 2014 - 13:30:41 - перейти к сообщению
esterio, в посте я ни разу не встретил упоминания о времени жизни, не говоря о том, что бы автор писал, что значение стоит в 0. Более того, комментарии вида "Stierus как можно было сказать о времени сессионной куки?" наводят на мысли о том, что люди не знают о существовании подобных настроек.
Мой ответ ровно в том и состоял, что нужно проверить время жизни и паниковать только после того, как убедился, что все настроено в соответствии с желаемым.
15. esterio - 28 Апреля, 2014 - 14:12:17 - перейти к сообщению
Stierus
Согласен с тем что в настройках можно подкрутить, но думаю что у ТС все стоит по дефолту. Но все таки проверить стоит.

Не поверете проверил в Хроме, все как и описано выше. Время установлено в 0. Закрыл и открыл ИД сессии старый. Такое же поведение и в огнелисе с установленым плагином "Менеджер сессий". Все таки я согласен это фича-бага

 

Powered by ExBB FM 1.0 RC1