Консультация № 50455
28.07.2006, 14:46
0.00 руб.
0 3 3
Добрый день! Как можно реализовать на сайте такую вещь: когда пользователь заходит за логином и паролем то он есть в списке on-line а когда выходит нет. Извените если вопрос уже задавался! Заранее спасибо.

Обсуждение

Неизвестный
28.07.2006, 15:02
общий
это ответ
Здравствуйте, Грицай Алексей Юрьевич!

Создайте файл onlineusers.txt, в котором будут храниться имена online пользователей. В функции Login (не знаю, как она у Вас называется) считываете этот файл в массив, проверяете, есть ли там такой элемент и, если нет - добавляете его. Соответственно, в Logout - удаляете его если он там есть.


Приложение:
function Login($username){ $users=file(‘onlineusers.txt‘); if(array_search($username,$users)==FALSE) { $users[]=$username."\n"; $fp=fopen(‘onlineusers.txt‘,‘wb‘); flock($fp,LOCK_EX); fwrite($fp,implode(‘‘,$users)); flock($fp,LOCK_UN); fclose($fp); }}function Logout($username){ $users=file(‘onlineusers.txt‘); $key=array_search($username,$users); if($key) { unset($users[$key]); $fp=fopen(‘onlineusers.txt‘,‘wb‘); flock($fp,LOCK_EX); fwrite($fp,implode(‘‘,$users)); flock($fp,LOCK_UN); fclose($fp); }}
Неизвестный
28.07.2006, 15:07
общий
это ответ
Здравствуйте, Грицай Алексей Юрьевич!
Можно например так:
Будем использовать сессии. Сделать базу где будет храниться идентификатор сессии и врема последней активности юзера, когда юзер заходит, стратуем сессию, и записываем ее идентификатор в базу и время входа, действия пользователся на сайте должны сопровождаться обновлением в базе времени его последней активности. А чтобы пользователь исчезал со временем из on-line необходимо проверять текущее время и время его последней активности, если разница во времени превосходит необходимый предел, то пользователя не следует считать on-line`овым. На случай если пользователь сам захочет выйти нужно просто уничтожить его сессию. Тут можно еще предложить несколько вариантов насчет выхода пользователя из on-line: можно просто удалять запись из базы, а можно при следующем его входе просто запись обновлять.
Удачи! ;)
Неизвестный
28.07.2006, 20:56
общий
это ответ
Здравствуйте, Грицай Алексей Юрьевич!

Ведем таблицу: active: user, logdate.

При заходе пользователя выполняем следующие запросы:

1. DELETE * FROM active WHERE (DATE_ADD(`logdate`,INTERVAL ‘10‘ MINUTE))<NOW();
2. INSERT INTO active (user,logdate) VALUES (‘$username‘,NOW());
3. SELECT * FROM active;
4. $n = mysql_num_rows(mysql_query($zapros3));
$n = количество пользователей онлайн.
Надеюсь понятно.
П.С. Если посетителей мало, первый запрос можно выполнять при каждом просмотре страницы, ну и естественно, при logout пользователя.
Форма ответа