Берешь ip пользователя, время посещения и записываешь в таблицу.
Затем даешь запрос узнать все ip, которые были в последние 5 минут, после чего запрос на удаление старых ip.
Все, готово.
SL_NeKrOmAnT, уже штук пять попробовал, но все показывают счетчик
добавлено спустя 1 минуту:
Akdmeh, ели бы я умел писать на php, думаю это былаб не проблема
[php:1:2d55c2e29c]
/* IP-адрес посетителя */
$ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
/* Удаляем устаревшие записи (те, кто не обновлял страницу в течении 3 минут) */
$mysqli->query("DELETE FROM `online` WHERE `time` < '".($time-180)."' AND `sid` = '".$id."'");
/*
Проверяем, есть ли данный IP в базе,
если есть проверяем прошло ли 3 минуты с момента последнего обновления страницы
*/
$uniq = mysql_num_rows(mysql_query("SELECT * FROM `online` WHERE `ip` = '".ip2long($ip)."' AND `time` > '".(time()-180)."'"));
if ($uniq > 0)
{
mysql_query("UPDATE `online` SET `time` = '".$time."' WHERE `ip` = '".ip2long($ip)."' AND `time` > '".(time()-180)."'");
}
else
{
mysql_query("INSERT INTO `online` (`ip`, `time`) values('".ip2long($ip)."', '".time()."')");
}
/* Подсчитываем онлайн */
$online = mysql_num_rows(mysql_query("SELECT * FROM `online` WHERE `time` > '".(time()-180)."'"));
/* Выводим */
echo 'На сайте: ['.$online.']';
[/php:1:2d55c2e29c]
Структура таблицы
[php:1:98a43affc1]
CREATE TABLE IF NOT EXISTS `online` (
`ip` bigint(12) NOT NULL,
`time` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
[/php:1:98a43affc1]
добавлено спустя 18 секунд:
Да.