Если пользователь зашёл на сайт под своим логином и паролем, то присваивается статус 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
Если последний запрос был более 10 минут назад, значит offline
Спустя 7 минут, 21 секунда (3.10.2010 - 16:03) DmitryOpalev написал(а):
Спустя 5 минут, 48 секунд (3.10.2010 - 16:09) maestro-lavon написал(а):
Есть ещё варианты?
Спустя 16 минут, 1 секунда (3.10.2010 - 16:25) Invis1ble написал(а):
maestro-lavon
средствами php - пишешь в БД время последней активности пользователя, а затем если это время меньше, чем (текущее время - таймаут), то предполагается, что пользователь оффлайн. Сам использую именно такой алгоритм
средствами 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";
}
Как то так...
В общем в голове сайта:
*** - <<сюда фунцкия времени, точно не помню, вроде 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](http://phpforum.ru/html/emoticons/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](http://phpforum.ru/html/emoticons/smile.gif)