Возникла проблема с Firefox, я не говорю за таб, при закрытии всего Firefox, сессионная переменная остается жива и клиент даже закрыв Firefox, имеет в памяти сессионную переменную какое-то время. В пропертис Firefox я не нашел способ убивать сессию при закрытии Firefox. Возникает ситуация, когда клиент закрыв браузер, через минуту открывает его снова и в закладках выбирает новый сайт и там такие же сессионные переменные user и password, но значения другие и клиент решает проблему только перезагрузкой виндоуса.
Под IE такой проблемы нет. Возможно, эта проблема только с Firefox 50.1.0.
Под FF после закрытия/открытия внутрь if (empty($_SESSION['user'])) не попадаю, под IE попадаю внутрь как и должно быть.
Коллега предложил уменьшить время жизни сессионной переменной, но параметры продакшн сервера мне менять никто не даст. Кроме того, там стоит 10 минут, это IMHO нормально.
Вариант, написать огромными буквами "выход только кнопкой" тоже не подходит, кто надписи читает...
Вообще то, сопоставление "пользователь - сессия" происходит посредством куки. Соответственно, копайте в сторону последних.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
sergeiss
8.01.2017 - 12:25
Цитата (sh47n @ 8.01.2017 - 11:52) |
через минуту открывает его снова и в закладках выбирает новый сайт и там такие же сессионные переменные user и password |
Это как??? Всякие сессионные переменные привязаны к определенному адресу. Точнее, к кукам, которые привязаны к определенному сайту. Собственно сами сессионные данные хранятся у тебя на сайте.
Поэтому, выбрав другой сайт (==другой адрес), юзер (точнее - другой сайт!) в принципе не может получить сессионные переменные твоего сайта.
Тут у тебя либо стоит какое-то автозаполнение полей, связанное с браузером, либо еще что-то подобное. Но сессия тут не при чем.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Another Reality
8.01.2017 - 12:38
Раз такая поляна, то можно попробовать проверять закрытие страницы и убивать руками
session_unset();
session_destroy();
session_regenerate_id(true);
setcookie('cookieName', '', time()-3600);
Цитата (T1grOK @ 8.01.2017 - 12:08) |
Вообще то, сопоставление "пользователь - сессия" происходит посредством куки. Соответственно, копайте в сторону последних. |
Предлагаемые события в jQuery на закрытие ff, не работают.
Когда убивать кукис не представляю. Клиент зашел через индекс, прошел регистрацию и сразу попал в глав.таблицу (все тот же индекс), в главн.таблице он выбирает что он хочет изменить, меняет и по завершению он должен попасть в глав.таблицу. В каждом php есть проверка на сессионую переменную, чтобы никакой китайский шутник не зашел без регистрации. При убийстве кукис на любом этапе будет требование регистрации, после этого меня расстреляют два раза.
Цитата (sergeiss @ 8.01.2017 - 12:25) |
Цитата (sh47n @ 8.01.2017 - 11:52) | через минуту открывает его снова и в закладках выбирает новый сайт и там такие же сессионные переменные user и password |
Это как??? Всякие сессионные переменные привязаны к определенному адресу. Точнее, к кукам, которые привязаны к определенному сайту. Собственно сами сессионные данные хранятся у тебя на сайте. Поэтому, выбрав другой сайт (==другой адрес), юзер (точнее - другой сайт!) в принципе не может получить сессионные переменные твоего сайта.
Тут у тебя либо стоит какое-то автозаполнение полей, связанное с браузером, либо еще что-то подобное. Но сессия тут не при чем.
|
Возможно, эта привязка не срабатывает в этой версии FF. Возможно, дело в папках.
Клиент открывает не xxx.xxx, а
xxx.xxx/tax или xxx.xxx/price или xxx.xxx/standards или еще что-то с индексным файлом
Только клиент знает полный путь, на xxx.xxx стоит status_header( 500 );
Защита от китайских шутников. А что делать, долбят постоянно. Пытаются в адресную строку что-то засунуть, меняют имена папок и php файлов. Смотрю регулярно лог, пока им не удалось никуда попасть.
Цитата (Another Reality @ 8.01.2017 - 12:38) |
Раз такая поляна, то можно попробовать проверять закрытие страницы и убивать руками
session_unset(); session_destroy(); session_regenerate_id(true); setcookie('cookieName', '', time()-3600); |
Если бы страницу закрывали, то по событию в jQuery можно было, что угодно сделать. Браузер закрывают, а потом: "ой-ой-ой! что делать???" Сейчас проверить не могу, 2 года назад отдали сайт клиентам и не было проблем, какая версия FF тогда была не не знаю. Возможно, не проверяли ситуацию с закрытием браузера. Возможно, тогда не было проблемы. В IE убивается сразу. Говорят,что в Хроме тоже нет проблемы, но я не проверял. В настройках FF не нашел ничего.
killer8080
8.01.2017 - 22:34
Цитата (sh47n @ 8.01.2017 - 11:52) |
Возникла проблема с Firefox, я не говорю за таб, при закрытии всего Firefox, сессионная переменная остается жива и клиент даже закрыв Firefox, имеет в памяти сессионную переменную какое-то время. |
время жизни кук определяется значением Expire в этих куках. Если оно задано, то куки живут до их истечения. Если там задана дата в прошлом, браузер её сразу убивает, этот трюк используют для удаления кук на клиенте. Если в Expire 0, то время её жизни зависит от браузера и его настроек. Раньше было принято такие куки называть сессионными и жили они до закрытия браузера. Сейчас хромы с лисами изменили это понятие, у них теперь правило хранения зависит от настроек браузера. Если выставлено начинать с пустой страницы или закладки, то кука убивается при закрытии, если стоит запускать с последнего места, то такие куки живут вечно. Время жизни сессии будет определятся только временем хранения сессии на сервере.
Цитата (sh47n @ 8.01.2017 - 11:52) |
Возникает ситуация, когда клиент закрыв браузер, через минуту открывает его снова и в закладках выбирает новый сайт и там такие же сессионные переменные user и password, но значения другие и клиент решает проблему только перезагрузкой виндоуса. |
вот это вообще не понял, причем тут другой сайт? И что решает перезагрузка?
killer8080
В FF я не нашел никаких настроек, указывающих срок жизни сессионной переменной.
Т.к. в IE после закрытия сессия не сохраняется, то 100% дело в FF.
Правда, остается загадкой, как в IE работает Reopen last browsing session, Я не поверил, банковский сайт открылся без пароля через 30 минут после закрытия браузера.
Перезагрузка 100% убивает сессионную переменную. Проверенно.
Другой сайт очень даже причем, переменная с таким именем существует и сразу попадаю внутрь(только под FF)
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.