Xwab
Форумыnavigate_nextНебольшие вопросы по PHP/MySQL

Сколько человек на сайте
Сообщения
Emerald

Подскажите как сделать?
Нужно так как на скрине.

10 Янв 2013, 11:41
SL_NeKrOmAnT

Эх... этого навалом в паблике...

10 Янв 2013, 11:43
Akdmeh

Берешь ip пользователя, время посещения и записываешь в таблицу.
Затем даешь запрос узнать все ip, которые были в последние 5 минут, после чего запрос на удаление старых ip.
Все, готово.

10 Янв 2013, 11:47
Emerald

SL_NeKrOmAnT, уже штук пять попробовал, но все показывают счетчик
добавлено спустя 1 минуту:
Akdmeh, ели бы я умел писать на php, думаю это былаб не проблема

10 Янв 2013, 11:48
SL_NeKrOmAnT

Щас будет!

10 Янв 2013, 11:49
SV

ну так раздел же НЕбольшие вопросы по php

10 Янв 2013, 11:49
Emerald

SV, где?

10 Янв 2013, 11:50
SL_NeKrOmAnT

[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]

10 Янв 2013, 11:52
Emerald

SL_NeKrOmAnT, к коду база еще нужна?

10 Янв 2013, 11:54
SL_NeKrOmAnT

Структура таблицы

[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 секунд:
Да.

10 Янв 2013, 11:55
Ответить на тему