flo.mAster 7 Опубликовано: 7 октября 2007 Рассказать Опубликовано: 7 октября 2007 Есть статистика(переделал я её чуток): <? /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Plugin for DataLife Engine - by ko1yan ----------------------------------------------------- email: konohoff@gmail.com site: www.afs.net.ru ----------------------------------------------------- Copyright (c) 2006,2007 ko1yan ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Данный код защищен авторскими правами ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Файл: counter.php ----------------------------------------------------- Назначение: Модуль статистика ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ if(!defined('DATALIFEENGINE')) { die("Hacking attempt!"); } include_once (ENGINE_DIR.'/data/counter.conf.php'); /* Определение IP пользователя */ if ($_SERVER['HTTP_X_FORWARDED_FOR']) $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; else $ip = $_SERVER['REMOTE_ADDR']; function obrowser($useragent) { $browser_type = "Неопределён"; $browser_version = ""; # Определяем тип и версию браузера if (ereg('MSIE ([0-9].[0-9]{1,2})', $useragent, $version)) { $browser_type = "IE"; $browser_version = $version[1]; } elseif (eregi('Opera ([0-9].[0-9]{1,2})', $useragent, $version)) { $browser_type = "Opera"; $browser_version = $version[1]; } elseif (preg_match('/Opera/i', $useragent)) { $browser_type = "Opera"; $val = stristr($useragent, "opera"); if (eregi("/", $val)){ $val = explode("/",$val); $browser_type = $val[0]; $val = explode(" ",$val[1]); $browser_version = $val[0]; } else { $val = explode(" ",stristr($val,"opera")); $browser_type = $val[0]; $browser_version = $val[1]; } } elseif (preg_match('/Firefox\/(.*)/i', $useragent, $version)) { $browser_type = "Firefox"; $browser_version = $version[1]; } elseif (preg_match('/avantbrowser/i', $useragent)) { $browser_type = "Avant Browser"; $browser_version = ""; } elseif (ereg('Mozilla/([0-9].[0-9]{1,2})'. $useragent, $version)) { $browser_type = "Netscape"; $browser_version = $version[1]; } return $browser_type." ".$browser_version; } function oos($useragent) { $os = 'Неопределёна'; # Выясняем операционную систему if(strpos($useragent, "Win") !== false) { if(strpos($useragent, "NT 6.0") !== false) $os = 'Windows Vista'; if(strpos($useragent, "NT 5.2") !== false) $os = 'Windows XPx64'; if(strpos($useragent, "NT 5.1") !== false || strpos($useragent, "Win32") !== false || strpos($useragent, "XP")) $os = 'Windows XP'; if(strpos($useragent, "NT 5.0") !== false) $os = 'Windows 2000'; if(strpos($useragent, "NT 4.0") !== false || strpos($useragent, "3.5") !== false) $os = 'Windows NT'; if(strpos($useragent, "Me") !== false) $os = 'Windows Me'; if(strpos($useragent, "98") !== false) $os = 'Windows 98'; if(strpos($useragent, "95") !== false) $os = 'Windows 95'; } if(strpos($useragent, "Linux") !== false || strpos($useragent, "Lynx") !== false || strpos($useragent, "Unix") !== false) $os = 'Linux'; if(strpos($useragent, "Macintosh")!== false || strpos($useragent, "PowerPC")) $os = 'Macintosh'; if(strpos($useragent, "OS/2")!== false) $os = 'OS/2'; if(strpos($useragent, "BeOS")!== false) $os = 'BeOS'; return $os; } /* длительность сессии в минутах */ $session=5; $vremya=strtotime ($confmc['tzone']); if ($confmc['lokalka']) $confmc['lokalka'] = '#'; else $confmc['lokalka'] = ''; $last_day=date("l",strtotime ("-6 hours")); /* текущий день недели */ $day_segodnya=date("l",trim($vremya)); $new_day = ''; $vsego = $db->query("select * from " . PREFIX . "_counter"); if($dat = $db->get_array($vsego)) { # Если новый день if ($day_segodnya!=$dat['segodnya']) { # Очищаем БД посетителей онлайн $sql = "DELETE FROM " . PREFIX . "_counter_ip"; $result = $db->query($sql); # Записываем текущий день недели $sql = "UPDATE " . PREFIX . "_counter SET $day_segodnya='0', segodnya='$day_segodnya'"; $result = $db->query($sql); $new_day=1; } } else { # если глюк очищаем таблицу $db->query("INSERT INTO " . PREFIX . "_counter VALUES (0,0,0,0,0,0,0,0,0,'$day_segodnya')"); $db->query("INSERT INTO " . PREFIX . "_countermax VALUES (0,0,0,0,0,0,0)"); } # удаляем старые сессии $sql = "DELETE FROM " . PREFIX . "_counter_ip WHERE Timer<".($vremya-($session*60)); $result = $db->query($sql); # Проверяем учтена ли сессия текущего посетителя $vsego2 = $db->query("select * from " . PREFIX . "_counter_ip WHERE ip='$ip'"); if($dat2 = $db->get_array($vsego2)) { # если учтена то продлеваем её $sql = "UPDATE " . PREFIX . "_counter_ip SET Timer='$vremya' WHERE ip='$ip'"; $result = $db->query($sql); $vsego = $db->query("select * from " . PREFIX . "_counter"); if($dat = $db->get_array($vsego)) { $maximum = $db->query("select * from " . PREFIX . "_countermax"); $max = $db->get_array($maximum); if ((($dat[$day_segodnya])>($max[$day_segodnya])) or (($dat[$day_segodnya])==($max[$day_segodnya]))) { $num=$dat[$day_segodnya]+1; $sql = "UPDATE " . PREFIX . "_countermax SET $day_segodnya='".$num."'"; $result = $db->query($sql); } if (($dat[$day_segodnya]+1)>$dat['rekord']) $cmupdate=", rekord=1+".$dat[$day_segodnya]; else $cmupdate=""; } $sql = "UPDATE " . PREFIX . "_counter SET $day_segodnya=$day_segodnya+1, gesamt=gesamt+1".$cmupdate;; $result = $db->query($sql); } else { # если не учтена то учитываем $vsego = $db->query("select * from " . PREFIX . "_counter"); if($dat = $db->get_array($vsego)) { # Заносим юзверя в БД $sql = "INSERT INTO " . PREFIX . "_counter_ip (Timer, ip) VALUES ('$vremya','$ip')"; $result = $db->query($sql); # проверка на максимум юзверей $maximum = $db->query("select * from " . PREFIX . "_countermax"); $max = $db->get_array($maximum); if ((($dat[$day_segodnya])>($max[$day_segodnya])) or (($dat[$day_segodnya])==($max[$day_segodnya]))) { $num=$dat[$day_segodnya]+1; $sql = "UPDATE " . PREFIX . "_countermax SET $day_segodnya='".$num."'"; $result = $db->query($sql); } if (($dat[$day_segodnya]+1)>$dat['rekord']) $cmupdate=', rekord=1+'.$dat[$day_segodnya]; else $cmupdate=''; global $db; $sql = "UPDATE " . PREFIX . "_counter SET $day_segodnya=$day_segodnya+1, gesamt=gesamt+1".$cmupdate; $result = $db->free($sql); } } $vsego = $db->query("select * from " . PREFIX . "_counter"); if($dat = $db->get_array($vsego)) { $dat[$day_segodnya]='<b>'.$dat[$day_segodnya].'</b>'; $maximum = $db->query("select * from " . PREFIX . "_countermax"); $max = $db->get_array($maximum); $online = $db->get_array($db->query("SELECT count(Ip) FROM " . PREFIX . "_counter_ip")); $counter .= '<style> .counter { border: 1px solid #e0e0e0; padding: 5px; text-align: left; font-size: 11px; font-family: Arial;} </style> <fieldset class="counter"> <legend>Статистика</legend><table border=0 width="140" cellspacing=1 cellpadding=1 align="center">' .'<tr><td></td><p align="center"><b>За неделю</b><p></td></tr>' .'<tr><td><font size="2">Понедельник</font></td><td align="right"><font size="2">'.$dat['Monday'].'</font></td></tr>' .'<tr><td><font size="2">Вторник</td><td align="right"><font size="2">'.$dat['Tuesday'].'</font></tr>' .'<tr><td><font size="2">Среда</td><td align="right"><font size="2">'.$dat['Wednesday'].'</font></tr>' .'<tr><td><font size="2">Четверг</td><td align="right"><font size="2">'.$dat['Thursday'].'</font></tr>' .'<tr><td><font size="2">Пятница</td><td align="right"><font size="2">'.$dat['Friday'].'</font></tr>' .'<tr><td><span style="color:#804040"><font size="2">Cуббота</span></td><td align="right"><span style="color:#804040"><font size="2">'.$dat['Saturday'].'</font></span></td></tr>' .'<tr><td><span style="color:#804040"><font size="2">Воскресение</span></td><td align="right"><span style="color:#804040"><font size="2">'.$dat['Sunday'].'</font></span></td></tr>' .'</table>'; $counter .= '<div style="padding-left: 6px; padding-top: 3px"><b>Сейчас на сайте</b>: '.$online['0'].'</span><br>' .'<b>Было всего</b>: '.$dat['gesamt'].'<br>' .'<b>Рекорд за день</b>: '.$dat['rekord'].'</div></fieldset><a href="http://dangels.net/" target="_blank" style="display: none;">dAnGels News</a>'; $counter .= flag($ip); if ($user_group[$member_id['user_group']]['allow_admin']) { $counter .= '<fieldset class="counter"> <legend>IP-адреса на сайте</legend><table width="100%" align="center">'; $result = $db->query("select Ip from " . PREFIX . "_counter_ip", $dbi); while($Ip = $db->get_array($result)) { $zapros = $db->get_array($db->query("select users_country, users_all_count from " . PREFIX . "_user WHERE users_ip='".$Ip['0']."'")); $country = $Ip['0']; $counter .= '<tr><td><font size="2"><a href="http://www.nic.ru/whois/?ip='.$country.'" target="_blank">'.$country.'</a></td></font>'; $all_count = $zapros['1']; $counter .= '<td align="right" width="8%"><font size="2">'.$all_count.'</font></td></tr>'; } $counter .='</table></fieldset>'; } # если новый день то отправить отчет за предыдущий день админу if ($new_day == 1) $new_day=@send_report($dat[$last_day]); } # Функция отправки отчета за предыдущий день. function send_report($number) { $last_full_day=date("D jS F Y",strtotime ("-1 day")); $message = 'Отчет за '.$last_full_day.' Количество посетителей сайта '.$_SERVER["HTTP_HOST"].' за день составило: '.$number; @mail($confmc['email'], ' Статистика посещений сайта $config[\'http_home_url\'] ', $message, 'From: auto@'.$_SERVER["HTTP_HOST"]); return 0; } function country_name ($name) { switch(strtr($name, "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ")) { case "AM": $ret = 'Армения'; break; case "AR": $ret = 'Аргентина'; break; case "AT": $ret = 'Австрия'; break; case "AU": $ret = 'Австралия'; break; case "AZ": $ret = 'Азербайджан'; break; case "BA": $ret = 'БоснияиГерцеговина'; break; case "BE": $ret = 'Бельгия'; break; case "BG": $ret = 'Болгария'; break; case "BH": $ret = 'Бахрейн'; break; case "BR": $ret = 'Бразилия'; break; case "BY": $ret = 'Беларусь'; break; case "CA": $ret = 'Канада'; break; case "CM": $ret = 'Камерун'; break; case "CN": $ret = 'Китай'; break; case "CO": $ret = 'Колумбия'; break; case "CR": $ret = 'Коста-Рика'; break; case "CU": $ret = 'Куба'; break; case "CY": $ret = 'Кипр'; break; case "CZ": $ret = 'Чехия'; break; case "DE": $ret = 'Германия'; break; case "EE": $ret = 'Эстония'; break; case "EG": $ret = 'Египет'; break; case "FI": $ret = 'Финляндия'; break; case "FO": $ret = 'Фарерскиеострова'; break; case "FR": $ret = 'Франция'; break; case "GB": $ret = 'Великобритания'; break; case "GR": $ret = 'Греция'; break; case "IL": $ret = 'Израиль'; break; case "IT": $ret = 'Италия'; break; case "JM": $ret = 'Ямайка'; break; case "JP": $ret = 'Япония'; break; case "KG": $ret = 'Киргизия'; break; case "KZ": $ret = 'Казахстан'; break; case "LT": $ret = 'Литва'; break; case "LV": $ret = 'Латвия'; break; case "MD": $ret = 'Молдавия'; break; case "MG": $ret = 'Мадагаскар'; break; case "MH": $ret = 'Маршалловыострова'; break; case "MX": $ret = 'Мексика'; break; case "NG": $ret = 'Нигерия'; break; case "NL": $ret = 'Нидерланды'; break; case "NP": $ret = 'Непал'; break; case "NZ": $ret = 'НоваяЗеландия'; break; case "PK": $ret = 'Пакистан'; break; case "PL": $ret = 'Польша'; break; case "RO": $ret = 'Румыния'; break; case "RU": $ret = 'Беларусь'; break; case "SA": $ret = 'СаудовскаяАравия'; break; case "SE": $ret = 'Швеция'; break; case "SI": $ret = 'Словения'; break; case "SK": $ret = 'Словакия'; break; case "SM": $ret = 'Сан-Марино'; break; case "TJ": $ret = 'Таджикистан'; break; case "TM": $ret = 'Туркмения'; break; case "TR": $ret = 'Турция'; break; case "TW": $ret = 'Тайвань'; break; case "UA": $ret = 'Украина'; break; case "US": $ret = 'CША'; break; case "VN": $ret = 'Вьетнам'; break; case "YE": $ret = 'Йемен'; break; default: $ret = 'Неопределено'; break; } return $ret; } function get_flag($ip, $ii) { global $db; /* Определение языка пользоваеля */ $language = $_SERVER['HTTP_ACCEPT_LANGUAGE']; $flag = substr($language, 0, 2); if ($ii == '1') { $sql = "INSERT INTO " . PREFIX . "_user (users_ip, users_country, users_today_count, users_all_count) VALUES ('$ip','$flag','1','1')"; $result = $db->query($sql); } else { $sql = "UPDATE " . PREFIX . "_user SET users_country='$flag' WHERE users_ip='$ip.'"; $result = $db->query($sql); } } function flag($user_ip) { global $config, $db; $zapros = $db->query("select * from " . PREFIX . "_user WHERE users_ip='$user_ip'"); $ret = ''; # проверяем присутствует ли в БД # тут проверяем имеется ли ip в базе, если имеется +1 посещение, если не имеется то заносим ip и флаг страны if($zzz = $db->get_array($zapros)) { $sql = "UPDATE " . PREFIX . "_user SET users_all_count=users_all_count+1 WHERE users_ip='$user_ip'"; $result = $db->query($sql); } else get_flag($user_ip, '1'); $zapros = $db->query("select * from " . PREFIX . "_user WHERE users_ip='$user_ip'"); if (@$zzz = $db->get_array($zapros)) { if (($zzz['users_country'] == '0') or ($zzz['users_country'] == '') or ($zzz['users_country'] == 'n/a')) get_flag($user_ip, '0'); $con = strtr($zzz['users_country'], "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz"); $users_all_count = $zzz['users_all_count']; if (($con =='') or ($con =='n\a') or ($con =='remar')) $con = '0'; /* Определение агента пользоваеля */ $useragent = $_SERVER['HTTP_USER_AGENT']; $ret .= '<fieldset class="counter"><legend>Ваша информация</legend><b>Ваш IP</b>: '.$user_ip.'<br /><b>Хостов c IP</b>: '.$users_all_count.'<br><b>Браузер</b>: '.obrowser($useragent).'<br /><b>Система</b>: '.oos($useragent).'</div></fieldset>'; } return $ret; } ?> Я хочу совместить с этим: <? /* Модуль: toWeb Online v.1.0 for DLE Автор: toWeb aka B@cZ Контакты: ICQ: 956-900 E-Mail: bacz@mail.ru Дата создания: 13.07.2007 */ if(!defined('DATALIFEENGINE')) { die("Hacking attempt!"); } // Определение IP пользователя if ($_SERVER['HTTP_X_FORWARDED_FOR']) $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; else $ip = $_SERVER['REMOTE_ADDR']; // Длительность сессии (Минуты) $session = 5; //Текущий день недели $day = date('w', time()); //Проверим на новый день недели $res = $db->query("SELECT `day` FROM `" . PREFIX . "_online_week`"); if($arr = $db->get_array($res)) { // Если новый день if ($day != $arr['day']) { # Если воскресенье чистим неделю if ($day == 1) { $db->query("DELETE FROM `".PREFIX."_online_week`"); $db->query("INSERT INTO `".PREFIX."_online_week` VALUES ('0','0','0','0','0','0','0','1')"); } // Записываем текущий день недели $db->query("UPDATE `".PREFIX."_online_week` SET `day` = '".$day."'"); } } else { // Если почему-то запрос не выполнился... $db->query("INSERT INTO `".PREFIX."_online_week` VALUES ('0','0','0','0','0','0','0','".$day."')"); } // Удаляем старые сессии $db->query("DELETE FROM `".PREFIX."_online` WHERE `last` < '".(time() - ($session*60))."'"); // Проверяем, учтен ли уже посетитель $res = $db->query("SELECT `last` from `".PREFIX."_online` WHERE `ip` = '".$ip."'"); if($db->num_rows($res)) { # Если есть, то обновляем счетчик $db->query("UPDATE `".PREFIX."_online` SET `last` = '".time()."' WHERE `ip` = '".$ip."'"); } else { # Если нету, создаем нового # И сразу заносим его NAME и ID в таблу, чтобы потом не обращаться к users каждый раз $query = $db->query("SELECT `name` FROM `".PREFIX."_users` WHERE `logged_ip` = '".$ip."';"); if ($arr = $db->get_array($query)) { $name = $arr['name']; } else { $name = ''; } $db->query("INSERT INTO `".PREFIX."_online` (`ip`,`last`,`name`) VALUES ('".$ip."','".time()."','".$name."')"); } // Обновляем статистику дня $db->query("UPDATE `".PREFIX."_online_week` SET `".$day."` = `".$day."`+1"); // Берем статистику за неделю $week = $db->query("SELECT * FROM `".PREFIX."_online_week` LIMIT 1"); if ($arr_week = $db->get_array($week)) { $online = '<style>.counter { border: 1px solid #e0e0e0; padding: 5px; text-align: left; font-size: 11px; font-family: tahoma; } </style>' .'<fieldset class="counter"><legend>Статистика</legend><table width="100%" cellspacing="1" cellpadding="1" border="0">' .'<tr><td align="center" colspan="2">Просмотры за неделю</td>' .'<tr><td>Понедельник</td><td align="right">'.$arr_week['0'].'</td></tr>' .'<tr><td>Вторник</td><td align="right">'.$arr_week['1'].'</td></tr>' .'<tr><td>Среда</td><td align="right">'.$arr_week['2'].'</td></tr>' .'<tr><td>Четверг</td><td align="right">'.$arr_week['3'].'</td></tr>' .'<tr><td>Пятница</td><td align="right">'.$arr_week['4'].'</td></tr>' .'<tr><td><span style="color:#804040">Cуббота</span></td><td align="right"><span style="color:#804040">'.$arr_week['5'].'</span></td></tr>' .'<tr><td><span style="color:#804040">Воскресенье</span></td><td align="right"><span style="color:#804040">'.$arr_week['6'].'</span></td></tr>' .'</table>' .'<div style="padding-top: 5px; text-align: center;"><b>Всего за неделю</b>: '.($arr_week['0']+$arr_week['1']+$arr_week['2']+$arr_week['3']+$arr_week['4']+$arr_week['5']+$arr_week['6']).'</div></fieldset>'; // Смотрим кто щас он-лайн $users = $db->query("SELECT `name` FROM `".PREFIX."_online` ORDER BY `name` ASC"); $num_all = $db->num_rows($users); $online .= '<fieldset class="counter">' .'<legend>Посетители</legend>' .'<b>Сейчас на сайте: '.$num_all.'</b><br>'; // Считаем кол-во пользователей и гостей $users_name = ''; $num_users = 0; $num_guest = 0; while($arr = $db->get_array($users)) { if (!empty($arr['name'])) { if ($num_users > 0) $users_name .= ', '; $users_name .= '<a href="/user/'.$arr['name'].'/"><small>'.$arr['name'].'</small></a>'; $num_users++; } else $num_guest++; } $online .= ' <small>- Гостей: <b>'.$num_guest.'</b><br>' .'- Пользователей: <b>'.$num_users.'</b></small>'; if ($num_users > 0) $online .= '<br><br>Пользователи: <b>'.$users_name.'</b>'; $online .= '</fieldset>'; } ?> Но во втором мне только нужно скока челво на сайте, сколько гостей и какие пользователи есть. Помогите плиз а то у мну не получается. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.