Перейти к публикации

Рекомендованные сообщения

Есть статистика(переделал я её чуток):

<?

/*

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 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>';

}

?>

Но во втором мне только нужно скока челво на сайте, сколько гостей и какие пользователи есть. Помогите плиз а то у мну не получается.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...