Как сделать Online / Offline пользователь на сайте?

Twix007

Гуру форума
Регистрация
11 Окт 2009
Сообщения
257
Реакции
57
base - users - user_lastactive (timestamp)
Как подключить к конкретному пользователю user_lastactive?
 
Любое действие пользователя - обновляете last_active.

Будь то переход по ссылке внутри сайта или нажатие на кнопку.

В общем, при обращении к серверу.

А ещё можно на js раз в 10-15 минут запрос к серверу отправлять, если других запросов не происходит.

А потом, если в течении этих 10-15 минут от пользователя не приходило ни единого запроса, значит offline
 
Любое действие пользователя - обновляете last_active.

Будь то переход по ссылке внутри сайта или нажатие на кнопку.
В общем, при обращении к серверу.
А ещё можно на js раз в 10-15 минут запрос к серверу отправлять, если других запросов не происходит.
А потом, если в течении этих 10-15 минут от пользователя не приходило ни единого запроса, значит offline
Сделал код, но как привязать к конкретному пользователю?
он в поле last_active обновляет все переходьі!
Код:
<?php
$con = mysql_connect($INFO['EZSQL_DB_HOST'], $INFO['EZSQL_DB_USER'], $INFO['EZSQL_DB_PASSWORD']); // Соединение с MySQL
mysql_select_db ($INFO['EZSQL_DB_NAME']); // Выбор базы данных
mysql_query("update `pligg_users` set user_lastactive=now()"); // Запись в базу timestamp
mysql_close($con);
?>
налел чтото похожее на скрипт но как его адаптирвать?
Для просмотра ссылки Войди или Зарегистрируйся
 
Сделал код, но как привязать к конкретному пользователю?
он в поле last_active обновляет все переходьі!
Код:
<?php
$con = mysql_connect($INFO['EZSQL_DB_HOST'], $INFO['EZSQL_DB_USER'], $INFO['EZSQL_DB_PASSWORD']); // Соединение с MySQL
mysql_select_db ($INFO['EZSQL_DB_NAME']); // Выбор базы данных
mysql_query("update `pligg_users` set user_lastactive=now()"); // Запись в базу timestamp
mysql_close($con);
?>
налел чтото похожее на скрипт но как его адаптирвать?
Для просмотра ссылки Войди или Зарегистрируйся

Код:
update `pligg_users` set user_lastactive=now() WHERE `id`=$user_id

WHERE надо добавить
 
Кому вы собираетесь lastactive менять? У пользователя есть id или что? По тому полю и обновляем

Идите и читайте документацию SQL
Для просмотра ссылки Войди или Зарегистрируйся
теперь не обновлется дата после добавления $user_id (у меня такое поле есть)
 
как сделать переменную для вывода
{if $onlfu} пользователь онлайн {else} пользователь оффлайн{/if}

ввод (работает)
$db->query($sql="UPDATE ".table_users." SET user_lastactive=now() WHERE user_id='$current_user->user_id'");

вывод не работает
$onlfu=$db->query($sql="SELECT * FROM ".table_users." WHERE status=1 AND TIMESTAMPDIFF(MINUTE, user_lastactive, NOW()) > 10;");
 
мои переменные
".table_users." - таблица с польователями
user_id='$current_user->user_id' - id пользователя
user_login='".$user->username."' - логин пользователя
user_lastactive дата последнего действия

код записи в строку user_lastactive :
Код:
$db->query($sql="UPDATE ".table_users." SET user_lastactive=now() WHERE user_id='$current_user->user_id'");

как адаптировать к этому коду?

Код:
$onstat = mysql_query("SELECT id FROM users WHERE login='$login' AND timeout < DATE_ADD(timeout,INTERVAL 1 MINUTE) ",$db);
$onlinestat = mysql_fetch_array($onstat);
if ($onlinestat['id'] == $id) {
print <<<HERE
<span class="onliness">онлайн</span>
HERE;
}else{
print <<<HERE
<span class="offliness">оффлайн</span>
HERE;
}
 
Тут нужно еще формат даты использовать Для просмотра ссылки Войди или Зарегистрируйся
PHP:
if($data['user_lastactive']> дата активности в формате (time()) из БД  )
{
    $online= round($myrow['user_lastactive'] - time(), 1);  \\\ делаем разницу дат, последеней активности и сейчас
    if ($online<900 )   \\\разница 15 минут
    {
        $online=offline!!;
    }
    echo "<b>Пользователь:</b> ".online."";

Ну что типа такого, чтобы возвращало значение путем математического решения.
 
Назад
Сверху