Прошу помощи (online/offline пользователи)

ArtemRazulin

Новичок
Доброго времени суток друзья.
У меня появилась проблема не могу настроить php скрипт я новичок в php так что не судите строго.
У меня есть панель администрации на сайте там показывается список пользователей из базы (логин, пароль, ip и тд)
Решил сделать статус что бы показывал какие пользователи online а какие offline, долго искать код не пришлось взял его отсюда http://webo4ka.ru/load/57-1-0-3865 и переделал под себя вот так.

PHP:
$today = date("U");
$totime = date("H:i:s",time()+3*3600);
$olddate = date("d.m.Y");
$u_login=$_SESSION['login'];
$timeold = mysql_query("UPDATE users SET lastdate='$today' WHERE login='".$u_login."'");
$timeout = mysql_query("UPDATE users SET lasttime='$totime' WHERE login='".$u_login."'");
$olddatee = mysql_query("UPDATE users SET olddate='$olddate' WHERE login='".$u_login."'");
$userinfo = mysql_query("SELECT lastdate FROM `users` WHERE login='".$u_login."'");
$userinfodat = mysql_fetch_array($userinfo);
$today = date("U");
if($userinfodat['lastdate'] + 100 < $today) {
mysql_query("UPDATE `users` SET `online`='offline' WHERE login='".$u_login."'");
} else {
mysql_query("UPDATE `users` SET `online`='online' WHERE login='".$u_login."'");
};
А теперь о проблеме: Когда пользователь заходит в кабинет то статус становится online но по истечению времени или если пользователь выйдет то статус не меняется.

Я новичок в этом деле и не знаю что ешё нужно предоставить что бы знающие люди посмотрели.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Надо решить, через какое время после последнего визита ты будешь считать пользователя ушедним в offline.

Вообще записывается дата, когда пользователь производил какие-либо действия, то есть нажимал на ссылки и отправлял данные. Делать это надо для любой страницы, а не только когда пользователь авторизовывается.
Пришел юзер, авторизовался - пошла дата, открыл какую-то страницу - записал дату, удалил юзер там что - ты пишешь дату последнего действия.

Хранить дату надо в одном поле типа datetime, а не как у тебя - отдельно в 2 поля.
 

ArtemRazulin

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

Вообще записывается дата, когда пользователь производил какие-либо действия, то есть нажимал на ссылки и отправлял данные. Делать это надо для любой страницы, а не только когда пользователь авторизовывается.
Пришел юзер, авторизовался - пошла дата, открыл какую-то страницу - записал дату, удалил юзер там что - ты пишешь дату последнего действия.

Хранить дату надо в одном поле типа datetime, а не как у тебя - отдельно в 2 поля.
Благодарю вас за ваш ответ, дело в том что я полный 0 в php только 3 день работаю с php я знаю только html и css так сказать по дизайну, вот в чём проблема.
Буду вам очень признателен если вы мне разжуёте ешё подробней так сказать для полного чайника. Или можете оставить icq или mail для связи что бы ответы были оперативны. Ешё раз спасибо
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
icq и тем более email - это навряд ли. Разжевывать тут особо нечего. Берем книгу, читаем ее и усваиваем оттуда все нужное. Самое простое для тебя - сделать функцию, которую ты будешь везде запускать, чтобы записать время действия юзера.

Там внутри будет один запрос вида
PHP:
mysqli_query("UPDATE users SET last_action_datetime=NOW() WHERE user_id = '".mysqli_real_escape_string($u_id)."'");
Делать апдейт по логину все же не так хорошо, как по первичному ключу.

Так же советую прочитать про SQL инъекции, если ты все же не решишься читать полную книгу по php
 
Сверху