[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как реализовать функцию User Offline на сайте
maestro-lavon
Как реализовать функцию Offline если не нажата кнопка ВЫХОД
Если пользователь зашёл на сайт под своим логином и паролем, то присваивается статус Online.
А если нажал кнопку ВЫХОД, то присваиваем значение Offline. Это понятно и ребёнку.
А вот если юзер на нажал кнопку выход а просто закрыл браузер и вернётся через несколько часов, можно ли с помощью PHP и MySQL реализовать что-то типа таймера. Например:
Блуждая по страницам постоянно будет обновлятся время, равное 10 мин. Пока пользователь не застыл на страничке или закрыл браузер таймер будет работать, по истечению 10 мин автоматически присваивается статус Offline...



Спустя 6 минут, 46 секунд (3.10.2010 - 15:54) DmitryOpalev написал(а):
У JavaScript усть такая функция, типа пользоатель закрывает страницу.
ПО идее с помощью нее можно передать данные серверу.

Спустя 1 минута, 44 секунды (3.10.2010 - 15:55) maestro-lavon написал(а):
Можно глянуть код?

Спустя 18 секунд (3.10.2010 - 15:56) vasa_c написал(а):
Очевидно, при каждом запросе нужно сохранять время этого запроса.
Если последний запрос был более 10 минут назад, значит offline

Спустя 7 минут, 21 секунда (3.10.2010 - 16:03) DmitryOpalev написал(а):
Точного кода я дать не могу, ибо сам никогда такого не раелизовывал, но вот тебе функция
- OnBeforeUnload взять
- И прочие полезные функции (их так много blink.gif ) взять

Спустя 5 минут, 48 секунд (3.10.2010 - 16:09) maestro-lavon написал(а):
Есть ещё варианты?

Спустя 16 минут, 1 секунда (3.10.2010 - 16:25) Invis1ble написал(а):
maestro-lavon
средствами php - пишешь в БД время последней активности пользователя, а затем если это время меньше, чем (текущее время - таймаут), то предполагается, что пользователь оффлайн. Сам использую именно такой алгоритм

Спустя 2 минуты, 53 секунды (3.10.2010 - 16:28) maestro-lavon написал(а):
А можно сам код?

Спустя 4 минуты, 37 секунд (3.10.2010 - 16:32) Invis1ble написал(а):
maestro-lavon
определенного кода нет.. Зависит от твоего кода - под него нужно затачивать. Алгоритм довольно простой - смысл я тебе уже изложил

Спустя 5 минут, 22 секунды (3.10.2010 - 16:38) Invis1ble написал(а):
maestro-lavon
Ты пиши, что конкретно тебе не понятно..

Спустя 4 минуты, 8 секунд (3.10.2010 - 16:42) maestro-lavon написал(а):
Я смысл понял.

В общем в голове сайта:

*** - <<сюда фунцкия времени, точно не помню, вроде NOW>>

if (!empty($_SESSION['usr']))
{
$update = mysql_query ("UPDATE users SET time ='***' WHERE usr='$_SESSION[usr]'", $db);
}
else
{
}

В файле профиля:

$status = $myrow['time'] + 10 мин;

if ($status>*** )
{
echo "Online";
}
else
{
echo "Offline";
}

Как то так...

Спустя 47 секунд (3.10.2010 - 16:43) maestro-lavon написал(а):
Поправь что нужно smile.gif

Спустя 11 минут, 26 секунд (3.10.2010 - 16:54) Invis1ble написал(а):
if (!empty($_SESSION['usr']))
mysql_query("UPDATE users SET time='" . time() . "' WHERE id='" . $_SESSION['usr']['id'] . "'", $db);

  $timeout = 10 * 60;
$status = $myrow['time'];

if ($myrow['time'] < time() - $timeout)
echo 'Свалил куда-то...';
else
echo 'Здеся.. ))';

Типа так

Спустя 2 минуты, 2 секунды (3.10.2010 - 16:56) maestro-lavon написал(а):
Спасибо!

Спустя 4 минуты, 26 секунд (3.10.2010 - 17:01) Invis1ble написал(а):
maestro-lavon
не за что, обращайся

Спустя 1 год, 5 месяцев, 18 дней, 17 часов, 56 минут, 55 секунд (22.03.2012 - 10:58) Speedy написал(а):
Скажите пожалуйста, код пойдет в обработку только в том случае, если его запустит пользователь. А как реализовать что бы проверка проходила автоматически с серверной стороны? Как это реализовано, допустим на форумах типа этого?

Спустя 2 часа, 25 минут, 53 секунды (22.03.2012 - 13:23) Speedy написал(а):
Все, сообразил) надо каждому пользователю в БД сделать ячейку "последнее действие" с автоматическим обновлением времени, а просматривающему пользователю просто сделать проверку. smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.