lægge log-filer sammen og vise dem Del 2
Ja ... så kom jeg så langt.Nu virker det original da som det skal :-)
Der er åbenbart en fejl et sted mht "referer validation" for er den slået til virker det ikke i NN/FF
Så den er da bare slået fra
Nu kommer så det spændende med at læse filerne og lægge dem sammen.
Det svære har jeg ikke kunnet få nogen af svarne i http://www.eksperten.dk/spm/714825 til at fungere.
Jeg har dog fået et af mine egne forsøg til delvis at virke ;-)
Lad os tage den fra toppen
På http://www.jart.dk/jgom/test.html er de testforsøg jeg har lavet
Det første nummer er fra et helt andet script der fungere, her lægges tal fra en fil sammen til et
Counter tallet er selve den cunter jeg vil bruge (Originale script) der tæller op hver gang.
Så kommer Display hvor jeg har forsøgt at lave php filen som foreslået i http://www.eksperten.dk/spm/714825 og forsøgt kaldet på 2 måder
showcounte er mit eget forsøg på at omskrive originalen til at vise counteren unden at tælle op
de to sidste er mine fejlslagne forsøg på at lægge flere filer sammen
(De kan være lidt rodet pga mine forsøg
Original script
---------------------------------------------------------------------------------------------------
<?php
// SETUP YOUR COUNTER
// Enable referer validation? 1 = YES, 0 = NO
$check_referer = 0;
// Domains that are allowed to access this script
$referers = array ("http://www.jart.dk/");
// Get page and log file names
$page = htmlentities($_GET['page']);
$logfile = "logs/" . $page . ".log";
// If $check_referer is set to 1 and if HTTP_REFERER is set to
// a value let's check refering site
if ($check_referer == 1 && !(empty($_SERVER['HTTP_REFERER'])))
{
check_referer($_SERVER['HTTP_REFERER']);
}
// If the log file doesn't exist we start count from 1 ...
if (! @$file = fopen($logfile,"r+"))
{
$count="1";
}
// If the log file exist lets read count from it
else {
$count = @fread($file, filesize($logfile)) or $count=0;
fclose($file);
// Raise the value of $count by 1
$count++;
}
// Write the new $count in the log file
$file = fopen($logfile,"w+") or die("Can't open/write the log file, please CHMOD logs folder to 777 (rwx-rwx-rwx)!");
fputs($file, $count);
fclose($file);
// Print out Javascript code and exit
echo "document.write('$count');";
exit();
// function that will check refering URL
function check_referer($thisurl) {
global $referers;
for ($i=0;$i<count($referers);$i++)
{
if (preg_match("/$referers[$i]/i",$thisurl)) {return true;}
}
die("Invalid referer!");
}
?>
---------------------------------------------------------------------------------------------------
Min showcounter.php
---------------------------------------------------------------------------------------------------
<?php
// SETUP YOUR COUNTER
// Enable referer validation? 1 = YES, 0 = NO
$check_referer = 0;
// Domains that are allowed to access this script
$referers = array ("http://www.jart.dk/");
// Get page and log file names
$page = htmlentities($_GET['page']);
$logfile = "logs/" . $page . ".log";
// If $check_referer is set to 1 and if HTTP_REFERER is set to
// a value let's check refering site
if ($check_referer == 1 && !(empty($_SERVER['HTTP_REFERER'])))
{
check_referer($_SERVER['HTTP_REFERER']);
}
// If the log file doesn't exist the count is 0 ...
if (! @$file = fopen($logfile,"r"))
{
$count="0";
}
// If the log file exist lets read count from it
else {
$count = @fread($file, filesize($logfile)) or $count=0;
fclose($file);
}
// Print out Javascript code and exit
echo "document.write('$count');";
exit();
// function that will check refering URL
function check_referer($thisurl) {
global $referers;
for ($i=0;$i<count($referers);$i++)
{
if(preg_match("/$referers[$i]/i",$thisurl)) {return true;}
}
die("Invalid referer!");
}
?>
---------------------------------------------------------------------------------------------------
min showcounter1.php (Forsøg på sammenlægning)
---------------------------------------------------------------------------------------------------
<?php
// Print out Javascript code
echo "var pcount = new Array();\n";
// read logs folder directory contents
$dirHandle = opendir('./logs/');
while ($file = readdir($dirHandle)) {
if(!is_dir($file))
// set .log files id name
$id = $file;
// read .log files contents
$logs = fopen($file,"r");
$hits = @fread($logs, filesize($file)) or $hits=0;
// Print out Javascript code
echo "pcount['$id']=$hits;\n";
fclose($logs);
}
closedir($dirHandle);
// Print out Javascript code
echo "
function pagecount_display(id)
{
document.write(pcount[id]);
}
";
exit();
?>
---------------------------------------------------------------------------------------------------
Håber ikke dette virker for uforståeligt. og håber i kan hjælpe mig :-)
På http://www.jart.dk/jgom/test.html er de testforsøg jeg har lavet
Jesper
