\n", $fdir);
} else {
printf("\n", $fdir);
$fdir = ".";
}
$passive = true;
// locate the counter database file in the root:
if (isset($_SERVER) && ($_SERVER['DOCUMENT_ROOT'] != "")) { $fdir = $_SERVER['DOCUMENT_ROOT']; }
if (!is_writable($fdir)) { chmod($fdir,0666); }
if (!is_writable($fdir)) { $fdir = "../../rw_common/plugins/stacks"; }
if (!is_writable($fdir)) { chmod($fdir,0666); }
if (!is_writable($fdir)) { $fdir = "../../resources"; }
if (!is_writable($fdir)) { chmod($fdir,0666); }
if (!is_writable($fdir)) { $fdir = "."; }
// warn if directory for counter file is not writable, try to fix:
if (!is_writable($fdir)) { chmod($fdir,0666); }
if (!is_writable($fdir)) { printf("\n", $fdir); }
// counter file in necessary dir:
$file = $fdir . "/" . "counter.dat";
// already incremented a hit counter on this page, so passive mode in this one:
if (isset($HitCounterFile) && ($HitCounterFile == $file)) { $passive = true; }
// create the file if it does not yet exist:
if (!file_exists($file)) {
file_put_contents($file,"",LOCK_EX);
if (file_exists($file)) {
chmod($file,0666);
printf("\n", $file);
} else {
printf("\n", $file, getcwd());
}
} else {
if (!is_writable($file)) { chmod($file,0666); }
if ($passive) {
printf("\n", $file);
} else {
printf("\n", $file);
}
}
// get current count and add new entry:
if (file_exists($file)) {
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '') {
$yipaddr = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$yipaddr = $_SERVER['REMOTE_ADDR'];
}
$utime = time();
// check if ip address should be ignored:
$yignore = false;
if ("" != "") {
$ipList = explode(" ", str_replace(array(",",";","\t","\n","\r"), " ", ""));
if (in_array($yipaddr,$ipList)) {
$yignore = true;
}
} else {
$ipList = array();
}
// add a log entry if not passive mode, and even if ip address is ignored:
if (!$passive) {
$line = $yipaddr . " " . $utime . "\n";
file_put_contents($file,$line,FILE_APPEND|LOCK_EX);
}
$fline = file_get_contents($file);
$lines = explode("\n",$fline);
// get first time entry:
$firstTime = false;
// sort on ip address:
sort($lines);
$count = 17000;
$ips = 17000;
$timed = 17000;
$previp = "";
$prevt = 0;
foreach ($lines as $entry) {
$tokens = explode(" ",$entry);
if (count($tokens) == 2) {
$ipaddr = $tokens[0];
// filter ip addresses here:
if (!in_array($ipaddr,$ipList)) {
$utime = intval($tokens[1]);
if ($firstTime === false) { $firstTime = $utime; }
if ($ipaddr != $previp) $ips ++;
if (($ipaddr != $previp) || (($utime - $prevt) > 60)) $timed ++;
$count ++;
$previp = $ipaddr;
$prevt = $utime;
}
}
}
// show count:
$usecount = $ips;
// make a tip:
$details = $count . " total hits, from " . $ips . " unique IPs";
if ($yignore) {
$details = $details . " (not including yours " . $yipaddr . ")";
} else {
$details = $details . " (including yours " . $yipaddr . ")";
}
if ($firstTime !== false) {
date_default_timezone_set('UTC');
$details = $details . ", since " . date('l jS \of F Y h:i:s A',$firstTime);
}
printf("", $details);
// split digits:
$str = "$usecount";
$strl = strlen($str);
for ($i=0; $i<$strl; $i++) {
if ($i <= 0) {
if ($strl <= 1) {
$class = "xcounter";
} else {
$class = "fcounter";
}
} else {
if ($i >= $strl-1) {
$class = "lcounter";
} else {
$class = "counter";
}
}
if (("," != "") && ($i > 0) && (($strl-$i) % 3 == 0)) { printf(",", $class); }
printf("%s", $class, substr($str,$i,1));
}
printf("\n");
// set this so another hit counter on this page will not increment again:
if (!$passive) { $HitCounterFile = $file; }
}
?>