crips
Освоившийся
Дата регистрации:
18.12.2011 13:05:02
Сообщений: 28
Хотел бы у Вас попросить помощи,
на сайте нужно реализовать функцию вывода онлайн пользователей,читал Вашу статью,пробовал скрипты разные и остановился на таком коде:
// Мы не хотим, чтобы поисковые боты искажали статистику:
if(is_bot()) die();
$stringIp = $_SERVER['REMOTE_ADDR'];
$intIp = ip2long($stringIp);
//Подключаемся к БД
mysql_connect("localhost","root",123);
mysql_select_db("counter"
// Проверяем отмечен ли посетитель как "онлайн":
$inDB = mysql_query("SELECT * FROM who_is_online WHERE ip=".$intIp);
if(!mysql_num_rows($inDB))
{
// Этого пользователя нет в БД
mysql_query("INSERT INTO who_is_online SET `ip`='".$intIp."'"
}
else
{
// Если пользователь онлайн, просто внести изменения в значение поля dt:
mysql_query("UPDATE who_is_online SET dt=NOW() WHERE ip=".$intIp);
}
// убираем записи, которые не обновлялись в течении 5 минут:
// добавили лимит, чтобы не сильно тормозил скрипт. Если людей достаточно много, можете лимит сделать меньше вплоть до 1.
// так сайт значительно быстрее работать будет.
mysql_query("DELETE FROM who_is_online WHERE dt<SUBTIME(NOW(),'0 0:05:0') LIMIT 20"
// Подсчитываем всех посетителей онлайн:
$query = mysql_query( "SELECT `ip` FROM `who_is_online`" );
$resalt = mysql_num_rows( $query );
echo $resalt;
Структура таблицы mysql:
CREATE TABLE `who_is_online` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`ip` int(10) NOT NULL DEFAULT '0',
`dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `ip` (`ip`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Но возникает проблемы,заходя на страницу моя информация записывается в БД и выводит,что 1 пользователь онлайн,но захожу с другого компьютера и с него уже не добавляются данные в БД,как можно это решить?