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 :: Действие на сервере при закрытие браузера.

 PHP.SU

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


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

> Описание: Нужно реализовать статусы пользователя на сайте (в сети/не в сети).
Germ
Отправлено: 30 Декабря, 2013 - 12:57:43
Post Id


Новичок


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


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




Нужно реализовать статусы пользователя на сайте (в сети/не в сети). Пока я сделал это так. При авторизации создаётся сессия с именем пользователя, id и уровнем доступа. Затем в базе прописывается время когда зашел пользователь и статус "в сети/не в сети". Всё хорошо, но если пользователь просто закрывает браузер, а не нажимает кнопку "Выйти" на сайте, которая запускает скрипт, меняющий значение в базе данных, то он так и остаётся в статусе "онлайн". Как мне решить эту проблему?

действие при входе:

PHP:
скопировать код в буфер обмена
  1.         $_SESSION['admin']['username'] = $user_name;
  2.         $_SESSION['admin']['user_id'] = $user_id;
  3.         $_SESSION['admin']['accesslevel'] = $accesslevel;
  4.         $sqldate = mysql_fetch_array(mysql_query("SELECT NOW()"));
  5.         $timeadd = $sqldate[0];
  6.         mysql_query("UPDATE users SET logged = '{$timeadd}' WHERE user_id = {$user_id}");
  7.         mysql_query("UPDATE users SET active = 'yes' WHERE user_id = {$user_id}");


при выходе:
PHP:
скопировать код в буфер обмена
  1. mysql_query("UPDATE users SET active = 'no' WHERE user_id = {$_SESSION['admin']['user_id']}");
  2. unset($_SESSION['admin']);
 
 Top
caballero
Отправлено: 30 Декабря, 2013 - 13:05:31
Post Id


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


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


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




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

можно еще попробовать поставить обработчик на закрытие страницы и по нему уведомлять сервер.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
eai
Отправлено: 30 Декабря, 2013 - 13:07:02
Post Id



Частый посетитель


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


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




PHP:
скопировать код в буфер обмена
  1.  mysql_query("UPDATE users SET logged = '{$timeadd}' WHERE user_id = {$user_id}");
  2.         mysql_query("UPDATE users SET active = 'yes' WHERE user_id = {$user_id}");

Это что такое ?
А одним запросом никак ?


В браузере есть событие не помню какое, на закрытие окна, но помните что окон может быть много. Зачем деактивировать сессию, пусть она лучше мама по таймауту умрет

(Отредактировано автором: 30 Декабря, 2013 - 13:08:38)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB