Posted
about 16 years
ago
by Sense (Posted 28 May 2009 00:07)Hi, Can you add in new version, one page where we can see a summary where i can see (and we can change day, month and year parameters) For get this page, i would like open this by the select html ( I have )exemple
... [More]
Unique visitor visite Pages Hits BandwidthSite 1 2 054 2 301 112 217 137 332 2.99 GBSite 2 123 137 2 360 30 634 609.25 MBSite 3 64 138 4 497 12 766 224.96 MB Total 2 247 2 585 122 583 184 515 3.81 GB i have found this script on the net and i have integrate this in your program but it's not clean Code: Select all/** * AWStats Totals is a simple php script to view the totals * (Unique visitors, Number of visits, Pages, Hits, Bandwidth) * for multiple sites per month with sort options. * * @author� � � Jeroen de Jong * @copyright� �2004-2009 Telartis BV * @version� � �1.17 * * @link� � � � http://www.telartis.nl/xcms/awstats * * Changelog: * 1.0� initial version * 1.1� use awstats language files to set your language * 1.2� register_globals setting can be off * 1.3� display yearly totals and last entry (Marco Gruber) * 1.4� use english messages when no language files found * 1.5� error_reporting setting can be E_ALL * 1.6� fixed incorrect unique visitors in year view (ConteZero) * 1.7� changed number and byte format * 1.8� added not viewed traffic, changed layout, improved reading of AWStats database * 1.9� define all variables (Michael Dorn) * 1.10 added browser language detection (based on work by Andreas Diem) * 1.11 fixed notice errors when no data file present (Marco Gruber) * 1.12 recursive reading of awstats data directory * 1.13 fixed trailing slashes problem with directories * 1.14 fixed errors when some dirs or files were not found (Reported by Sam Evans) * 1.15 added security checks for input parameters (Elliot Kendall) * 1.16 fixed month parameter 'all' to show stats in awstats * 1.17 fixed small problem with open_basedir (Fred Peeterman) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.� See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA� 02111-1307, USA. *//******************************************************* * SETUP SECTION *******************************************************//** * Set this value to the directory where AWStats * saves its database and working files into. */$DirData = 'D:\AWStats\donnees';/** * The URL of the AWStats script. */$AWStatsURL = 'D:\AWStats\wwwroot\cgi-bin\awstats.pl';/** * Set your language. * Possible value: *� Albanian=al, Bosnian=ba, Bulgarian=bg, Catalan=ca, *� Chinese (Taiwan)=tw, Chinese (Simpliefied)=cn, Czech=cz, Danish=dk, *� Dutch=nl, English=en, Estonian=et, Euskara=eu, Finnish=fi, *� French=fr, Galician=gl, German=de, Greek=gr, Hebrew=he, Hungarian=hu, *� Icelandic=is, Indonesian=id, Italian=it, Japanese=jp, Korean=kr, *� Latvian=lv, Norwegian (Nynorsk)=nn, Norwegian (Bokmal)=nb, Polish=pl, *� Portuguese=pt, Portuguese (Brazilian)=br, Romanian=ro, Russian=ru, *� Serbian=sr, Slovak=sk, Spanish=es, Swedish=se, Turkish=tr, Ukrainian=ua, *� Welsh=wlk. *� First available language accepted by browser=auto */$Lang = 'fr';/** * Set the location of language files. */$DirLang = 'D:\AWStats\wwwroot\cgi-bin\lang';/** * How to display not viewed traffic * Possible value: ignore, columns, sum */$NotViewed = 'sum';/** * How to sort. * Possible value: * config, unique, visits, pages, hits, bandwidth, * not_viewed_pages, not_viewed_hits, not_viewed_bandwidth */$sort_default = 'bandwidth';/** * Set number format. */$dec_point = '.';$thousands_sep = ' ';/** * Config names to filter. Shows all if empty array. */$FilterConfigs = array();/*To read website configs from database, do something like:$sql = 'SELECT config FROM users WHERE (user=...)';$rs = mysql_query($sql);if ($rs) while ($row = mysql_fetch_array($rs))� � $FilterConfigs[] = $row['config'];*//******************************************************* * PROGRAM SECTION *******************************************************/if (isset($_GET['sort'])) $sort = preg_replace('/[^_a-z]/', '', $_GET['sort']); else $sort = $sort_default;if (isset($_GET['year'])) $year = (int)$_GET['year']; else $year = date('Y');if (isset($_GET['month'])) $month = (int)$_GET['month']; else $month = date('n');if (!$month) $month = 'all';function get_config($file) {� � $r = '';� � if (preg_match('/awstats\d{6}\.(.+)\.txt/', $file, $match)) $r = $match[1];� � return $r;}function read_history($file) {� � $config = get_config($file);� � $s = '';� � $f = fopen($file, 'r');� � while (!feof($f)) {� � � �$line = fgets($f, 4096);� � � �$s .= $line;� � � �if (trim($line) == 'END_TIME') break;� � }� � fclose($f);� � $visits_total = 0; $unique_total = 0; $pages_total = 0; $hits_total = 0; $bandwidth_total = 0;� � $not_viewed_pages_total = 0; $not_viewed_hits_total = 0; $not_viewed_bandwidth_total = 0;� � if (preg_match('/TotalVisits (\d+)/', $s, $match)) $visits_total = (int)$match[1];� � if (preg_match('/TotalUnique (\d+)/', $s, $match)) $unique_total = (int)$match[1];� � if (preg_match('/\nBEGIN_TIME \d+\n(.*)\nEND_TIME\n/s', $s, $match)) {� � � � foreach (explode("\n", $match[1]) as $row) {� � � � � � list($hour, $pages, $hits, $bandwidth,� � � � � � � � �$not_viewed_pages, $not_viewed_hits, $not_viewed_bandwidth) = explode(' ', $row);� � � � � � $pages_total += $pages; $hits_total += $hits; $bandwidth_total += $bandwidth;� � � � � � $not_viewed_pages_total += $not_viewed_pages;� � � � � � $not_viewed_hits_total += $not_viewed_hits;� � � � � � $not_viewed_bandwidth_total += $not_viewed_bandwidth;� � � � }� � }� � return array('config'=>$config, 'visits'=>$visits_total, 'unique'=>$unique_total,� � � � � � � � �'pages'=>$pages_total, 'hits'=>$hits_total, 'bandwidth'=>$bandwidth_total,� � � � � � � � �'not_viewed_pages'=>$not_viewed_pages_total,� � � � � � � � �'not_viewed_hits'=>$not_viewed_hits_total,� � � � � � � � �'not_viewed_bandwidth'=>$not_viewed_bandwidth_total);}function parse_dir($dir) {� � // add a trailing slash if it doesn't exist:� � if (substr($dir, -1) != '/') $dir .= '/';� � $files = array();� � if ($dh = @opendir($dir)) {� � � � while (($file = readdir($dh)) !== false) {� � � � � � if (!preg_match('/^\./s', $file)) {� � � � � � � � if (is_dir($dir.$file)) {� � � � � � � � � � $newdir = $dir.$file.'/';� � � � � � � � � � chdir($newdir);� � � � � � � � � � $files = array_merge($files, parse_dir($newdir));� � � � � � � � } else {� � � � � � � � � � $files[] = $dir.$file;� � � � � � � � }� � � � � � }� � � � }� � � � chdir($dir);� � }� � return $files;}if (!is_dir($DirData)) die("Could not open directory $DirData");$dirfiles = parse_dir($DirData);$files = array();$config = array();if ($month == 'all') $pat = '\d{2}'; else $pat = substr('0'.$month, -2);$pat = '/awstats'.$pat.$year.'\.(.+)\.txt$/';foreach ($dirfiles as $file) if (preg_match($pat, $file, $match)) {� � $config = $match[1];� � if (!$FilterConfigs || in_array($config, $FilterConfigs)) {� � � � $configs[] = $config;� � � � $files[] = $file;� � }}$visits_total = 0; $unique_total = 0; $pages_total = 0; $hits_total = 0; $bandwidth_total = 0;$not_viewed_pages_total = 0; $not_viewed_hits_total = 0; $not_viewed_bandwidth_total = 0;$rows = array();if ($files) {� � array_multisort($configs, $files);� � $row_prev = array();� � for ($i = 0, $cnt = count($files); $i <= $cnt; $i++) {� � � � $row = array();� � � � if ($i < $cnt) {� � � � � � $row = read_history($files[$i]);� � � � � � if ($NotViewed == 'sum') {� � � � � � � � $row['pages'] += $row['not_viewed_pages'];� � � � � � � � $row['hits'] += $row['not_viewed_hits'];� � � � � � � � $row['bandwidth'] += $row['not_viewed_bandwidth'];� � � � � � }� � � � � � $visits_total += $row['visits'];� � � � � � $unique_total += $row['unique'];� � � � � � $pages_total += $row['pages'];� � � � � � $hits_total += $row['hits'];� � � � � � $bandwidth_total += $row['bandwidth'];� � � � � �� � � � � � if ($NotViewed == 'columns') {� � � � � � � � $not_viewed_pages_total += $row['not_viewed_pages'];� � � � � � � � $not_viewed_hits_total += $row['not_viewed_hits'];� � � � � � � � $not_viewed_bandwidth_total += $row['not_viewed_bandwidth'];� � � � � � }� � � � }� � � � if ( isset($row['config']) && isset($row_prev['config']) &&� � � � � � �($row['config'] == $row_prev['config']) ) {� � � � � � $row['visits'] += $row_prev['visits'];� � � � � � $row['unique'] += $row_prev['unique'];� � � � � � $row['pages'] += $row_prev['pages']; � � � � � � $row['hits']� += $row_prev['hits'];� � � � � � $row['bandwidth'] += $row_prev['bandwidth'];� � � � � � if ($NotViewed == 'columns') {� � � � � � � � $row['not_viewed_pages'] += $row_prev['not_viewed_pages'];� � � � � � � � $row['not_viewed_hits'] += $row_prev['not_viewed_hits'];� � � � � � � � $row['not_viewed_bandwidth'] += $row_prev['not_viewed_bandwidth'];� � � � � � }� � � � } elseif ($i > 0) $rows[] = $row_prev;� � � � $row_prev = $row;� � }}function multisort(&$array, $key) {� �$cmp = create_function('$a, $b',� � � �'if ($a["'.$key.'"] == $b["'.$key.'"]) return 0;'.� � � �'return ($a["'.$key.'"] > $b["'.$key.'"]) ? -1 : 1;');� �usort($array, $cmp);}if ($sort == 'config') sort($rows); else multisort($rows, $sort);function detect_language($DirLang) {� � $Lang = '';� � foreach (explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']) as $Lang) {� � � � $Lang = strtolower(trim(substr($Lang, 0, 2)));� � � � if (is_dir("$DirLang/awstats-$Lang.txt")) break; else $Lang = '';� � }� � if (!$Lang) $Lang = 'en';� � return $Lang;}function read_language_data($file) {� � $r = array();� � if (file_exists($file)) $lines = file($file);� � if ($lines) foreach ($lines as $line)� � � � if (preg_match('/^message(\d+)=(.*)$/', $line, $match))� � � � � � $r[$match[1]] = $match[2];� � return $r;}// remove trailing slash if there is one:if (substr($DirLang, -1) == '/') $DirLang = substr($DirLang, 0, strlen($DirLang) - 1);if ($Lang == 'auto') $Lang = detect_language($DirLang);$message = read_language_data("$DirLang/awstats-$Lang.txt");if (!$message) {� � $message[7]� �= 'Statistics for';� � $message[10]� = 'Number of visits';� � $message[11]� = 'Unique visitors';� � $message[56]� = 'Pages';� � $message[57]� = 'Hits';� � $message[60]� = 'Jan';� � $message[61]� = 'Feb';� � $message[62]� = 'Mar';� � $message[63]� = 'Apr';� � $message[64]� = 'May';� � $message[65]� = 'Jun';� � $message[66]� = 'Jul';� � $message[67]� = 'Aug';� � $message[68]� = 'Sep';� � $message[69]� = 'Oct';� � $message[70]� = 'Nov';� � $message[71]� = 'Dec';� � $message[75]� = 'Bandwidth';� � $message[102] = 'Total';� � $message[115] = 'OK';� � $message[133] = 'Reported period';� � $message[160] = 'Viewed traffic';� � $message[161] = 'Not viewed traffic';}function byte_format($number, $decimals = 2) {� � global $dec_point, $thousands_sep;� � // kilo, mega, giga, tera, peta, exa, zetta, yotta� � $prefix_arr = array('','k','M','G','T','P','E','Z','Y');� � $i = 0;� � if ($number == 0) $result = 0; else {� � � � $value = round($number, $decimals);� � � � while ($value > 1024) { $value /= 1024; $i++; }� � � � $result = number_format($value, $decimals, $dec_point, $thousands_sep);� � }� � $result .= ' '.$prefix_arr[$i].'B'; if (!$i) $result .= 'ytes';� � return $result;}function num_format($number, $decimals = 0) {� � global $dec_point, $thousands_sep;� � return number_format($number, $decimals, $dec_point, $thousands_sep);}/******************************************************* * HTML SECTION *******************************************************/?>AWStats Totals:$year = date('Y'); ?>if ($NotViewed == 'columns') {?> }$url = $_SERVER['SCRIPT_NAME']."?month=$month&year=$year&sort=";?> if ($NotViewed == 'columns') {?>}foreach ($rows as $row) {� � echo '� � � � �$row['config'].'">'.$row['config'].''.num_format($row['unique']).� � � � �''.num_format($row['visits']).''.num_format($row['pages']).� � � � �''.num_format($row['hits']).''.byte_format($row['bandwidth']);� � if ($NotViewed == 'columns') echo ''.num_format($row['not_viewed_pages']).� � � � �''.num_format($row['not_viewed_hits']).� � � � �''.byte_format($row['not_viewed_bandwidth']);� � echo "\n";}echo ' Total'.num_format($unique_total).� � �''.num_format($visits_total).''.num_format($pages_total).� � �''.num_format($hits_total).''.byte_format($bandwidth_total);if ($NotViewed == 'columns') echo ''.num_format($not_viewed_pages_total).� � �''.num_format($not_viewed_hits_total).� � �''.byte_format($not_viewed_bandwidth_total);echo "\n";?>Read Main Topic
[Less]
|