[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Задача: пользователи онлайн
newpdv
Здраствуйте всем!
Вот такая нелегкая задача.
Нужно чтобы на сайте отображалось кто онлайн(пользователи)
Вот что я придумал(план):
Есть две таблицы: одна кто онлайн по ip(users_online); вторая пользователи(tb_users) в которой есть столбец последний вход(ip)
Можно сделать так чтобы ip из первой таблицы сравнивался с ip из второй и если есть совпадения выводил ник
Кто возьметься?
Вот еще:
Таблица users_online: столбец ника - username столбец ip - ip
Таблица tb_users: столбец ip - visitor

Очень буду благодарен!!!
Могу помочь в чем нибудь(кликнуть по рекламе к примеру или рефералом стать)






Спустя 14 часов, 50 минут, 54 секунды (30.09.2008 - 07:13) kirik написал(а):
думаю что тебе что-то типа этого нужно -

Код
SELECT `visitor` FROM `tb_users` LEFT JOIN `users_online` ON `tb_users`.`ip` = `users_online`.`ip`


План надо не придумывать wink.gif

Кстати почему-бы не записывать все в одну таблицу?

И еще.. Можно реализовать через сессии и тогда можно будет намного точнее посчитать сколько пользователей (браузеров) на сайте. Сесси можно также записывать в БД, а рядом с сессией записывать ник..

Спустя 3 месяца, 21 день, 7 часов, 5 минут, 55 секунд (21.01.2009 - 15:19) IamSmorodin написал(а):
Цитата (kirik @ 30.09.2008 - 07:13)
И еще.. Можно реализовать через сессии и тогда можно будет намного точнее посчитать сколько пользователей (браузеров) на сайте. Сесси можно также записывать в БД, а рядом с сессией записывать ник..


А как это реализовать?

Спустя 1 час, 28 минут, 24 секунды (21.01.2009 - 16:47) jetistyum написал(а):
можно поступить проще (имхо Сессии на базах данных это несколько проблематично, но тоже не лишено смысла). при каждом обращении к любой странице ты апдейтишь одно поле, в котором ставишь время (timestamp)
и потом выбираешь всех пользователей, у которых время последнего обращения меньше 5 минут... (на сколько я понимаю, чаще всего именно так построено отслеживание юзеров)
можно еще поставить на каждой страничке пингер Ajax-овский, который будет посылать запросы каждые n секунд.... тогда ты точнее сможешь отслеживать юзеров Online, (так же обновляя поле последнего пинга, и выбирать уже не за 5 минут, а за 30 сек) .. но тогда возрастет нагрузка на сервер, и возможно у кого-то не будет работать JS ( мобильные браузеры, текстовые типа Lynx).
Проще я не вижу решения, сложнее - можно smile.gif

Спустя 4 минуты, 28 секунд (21.01.2009 - 16:52) twin написал(а):
С пингерами надо поосторожнее. Забудет юзер окно закрыть и нащелкает ему... А если безлимитка - Вам.

Спустя 10 минут, 36 секунд (21.01.2009 - 17:02) jetistyum написал(а):
нет, собственно пингер отправляет ооооочень мало информации .. пингер такие сайты, как напрмер gmail, fotocash.ru ктому же не обязательно что-то отправлять и получать....
просто get-ом дергать интерфейс, который не возвращает ни одного байта кроме серверных заголовков, этого будет достаточно.
а на счет трафика ... даже если юзер забудет окно на весь день, на трафике это мало скажется ... каждая картинка весит гораздо больше.
другое решение - писать клиент на Flash и сервер например на cpp ... открывать соединение... и по этому соединению отслеживать юзеров....

Спустя 5 месяцев, 22 дня, 20 часов, 10 минут, 56 секунд (14.07.2009 - 12:13) Сергей написал(а):
А я делал всегда проще заходит пользователь на сайт его IP записывается в базу, потом с помощью нехитрой функции проверяем на сайте или нет

if (!$sock = @fsockopen($ip, $port, $num, $error, 3)) {
header("Location: ../img/off.png");
} else {
header("Location: ../img/on.png");}

Спустя 3 минуты, 23 секунды (14.07.2009 - 12:16) Сергей написал(а):
Моленько не так объяснил))))))

Файл status.php

PHP
<?php
$ip
=$_GET[ip];
if (
$ip!='') {
$port "80";
if (!
$sock = @fsockopen($ip$port$num$error3)) {
header("Location: ../img/off.png");
} else {
header("Location: ../img/on.png");}
} else {
header("Location: ../img/off.png");}


Файл Index.php

<img src='status.php?ip=127.0.0.1' alt='IP' title='Статус пользователя'>


Надеюсь нигде не ошибся, но если что исправите (время добавления сообщений посмотрите и всё поймете писал на скорую руку)))))))))))


_____________
Быстрый ответ:

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