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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Информация о SESSION

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Dark_Knight
Отправлено: 14 Октября, 2015 - 10:22:52
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Возможно при помощи крона или других методов узнать, когда уничтожилась сессия для определенного пользователя?

(Отредактировано автором: 14 Октября, 2015 - 10:23:06)

 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Октября, 2015 - 11:58:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Сессионные файлы хранятся в директории указанной в конфиге.
Если эти файлы лежат в стандартном месте, то туда заглядывает чистильщик и просто удаляет файлы старше чем установлено в сроке жизни сессии.
Если место не стандартное, то файлы сессий не удаляются, вот их можно по filemtime() почекать.
 
 Top
Dark_Knight
Отправлено: 14 Октября, 2015 - 12:12:08
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




У меня проверка, что пользователь удачно залогинился стоит через сессию. Как мы знаем, что при закрытии браузера сессия для данного пользователя уже не будет действовать при новом открытии браузера. Как мне узнать, что пользователь закрыл браузер через сессию?
Есть вариант записывать значение сессии в БД и если пользователь хочет зайти заного, то уже проверять по куки сессию и если они не равны обновлять значения в БД что пользователь удачно зашел на сайт.

(Отредактировано автором: 14 Октября, 2015 - 12:13:47)

 
 Top
Мелкий Супермодератор
Отправлено: 14 Октября, 2015 - 12:21:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




DeepVarvar пишет:
Если эти файлы лежат в стандартном месте, то туда заглядывает чистильщик и просто удаляет файлы старше чем установлено в сроке жизни сессии.
Если место не стандартное, то файлы сессий не удаляются

Есть варианты.
В нестандартное место может придти родной сборщик мусора php и тоже почистить.

Dark_Knight пишет:
Как мы знаем, что при закрытии браузера сессия для данного пользователя уже не будет действовать при новом открытии браузера.

Мы этого не знаем, а лишь только рекомендуем браузеру такое поведение. Дальнейшее на усмотрение браузера.

Dark_Knight пишет:
Как мне узнать, что пользователь закрыл браузер через сессию?

Никак.

Какую задачу вы хотите решить?


-----
PostgreSQL DBA
 
 Top
Dark_Knight
Отправлено: 14 Октября, 2015 - 12:44:01
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Вообще мне нужно сделать проверку на параллельные сессии. Первую часть сделал и когда пользователь вышел с сайта через кнопку "Выход" и настройках стоит проверка на запрет паралельных сессий, то работает все нормально, но есть "Но". Если пользователь просто закрыл браузер или сессия для него разрушилась, то он уже не сможет зайти на сайт. У меня в голове 2 вариант решения. В готовой таблице онлайн хранить инфу о зарегененых пользователях и перед их удалением делать выборку кому нужно обновить статус, что он вышел сайта. Второй вариант - обновлять статус, что пользователь онлайн через аякс при postMessage, но тогда при закрытии вкладки будет сделан автоматический выход, что не есть не очень хорошо. Оба метода решения костыльные, но ничего толкого в голову не пришло.
 
 Top
Мелкий Супермодератор
Отправлено: 14 Октября, 2015 - 13:17:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А толкового решения нет в принципе. HTTP не сессионный протокол и всё прочее в его рамках является костылями. Включая куки и, следовательно, механизм сессий php.

Что есть параллельная сессия? Что хотите запретить делать? И, желательно, почему?


-----
PostgreSQL DBA
 
 Top
Dark_Knight
Отправлено: 14 Октября, 2015 - 13:29:42
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Это, как у мейл ру функция. Запрет паралельных сессиях. Если она включена в настройках, то нельзя зайти на сайт с другого аккаунта. Если уже пользователь зашел в кабинет, то с другого браузера зайти нельзя.
 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Октября, 2015 - 14:05:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Кастомная рандомная кука тебе поможет.
Кто первый встал того и тапки.
Если второй ломицца на вход, а кука не совпала (или её вообще нет), значит отправить в веселое путешествие.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB