Avatar billede jesper-moeller Nybegynder
15. juni 2006 - 10:38 Der er 18 kommentarer og
1 løsning

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

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 :-)

http://www.jart.dk/jgom/test.html er de testforsøg jeg har lavet


Jesper
Avatar billede jakobdo Ekspert
15. juni 2006 - 10:56 #1
Hvad hedder din log filer?
Og hvordan ser indholdet ud i dine filer?
Avatar billede jesper-moeller Nybegynder
15. juni 2006 - 11:43 #2
jeg har lavet 4 test log filer

test.log
test1.log
test2.log
test3.log

Ellers heder de hvad jeg kalder dem når jeg kalder counteren feks nyheder
<script type="text/javascript" src="../componenter/pagecount/counter.php?page=nyheder"><!--
                            //--></script>

findes siden nyheder ikke opretter counter den ... ellers lægger counter 1 til indholdet

Indholdet af .log filerne er kun tallet af hits...intet andet
Avatar billede jakobdo Ekspert
15. juni 2006 - 12:05 #3
Så test lige l0vgaard's kode igen:

<?php
$counterPages[] = "test.log";
$counterPages[] = "test1.log";
$counterPages[] = "test2.log";
$counterPages[] = "test3.log";

$sum = 0;
foreach($counterPages as $page) {
$data = file_get_contents($page);
$sum += $data;
}
echo $sum;
?>

Giver det dig ikke en total?
Avatar billede jesper-moeller Nybegynder
15. juni 2006 - 15:35 #4
Lige for at være helt sikker....

Hvor skal jeg sætte det ind ??

På siden eller i display.php ???

:-/
Avatar billede jakobdo Ekspert
15. juni 2006 - 15:54 #5
Prøv at start med at smid indholdet i test.php
og læg filen i samme dir som: test.log, test1.log og filerne og åben filen i en browser.
Avatar billede jesper-moeller Nybegynder
15. juni 2006 - 16:00 #6
Og hvordan kalder jeg så den test.php ??

og skal jeg så ind og tilføje til den hvergang der kommer en ny side ????
Avatar billede jakobdo Ekspert
15. juni 2006 - 16:28 #7
Fang mig lige på msn: jakobdo (at) hotmail [dot] com
Avatar billede jesper-moeller Nybegynder
15. juni 2006 - 16:57 #8
msn ?  ...

Hmmm ... lang tid siden jeg har brugt den ..... skal lige se om jeg har den instaleret enu
Avatar billede jesper-moeller Nybegynder
15. juni 2006 - 17:36 #9
Detsvære ikke instaleret msn :-/

Men hvorom alting er ... får intet resultat ud af de forsøg

Kun mit eget forsøg viser noget... men det lægger intet sammen ... viser kun en fil
Avatar billede jakobdo Ekspert
15. juni 2006 - 21:07 #10
Har du dine log filer liggende online?
Så kan jeg prøve at lave noget kode på min server, som henter dine filer og laver en sum af dem?
Avatar billede jesper-moeller Nybegynder
15. juni 2006 - 21:29 #11
Jeps

http://www.jart.dk/jgom/componenter/pagecount/logs/

der ligger:

test.log
test1.log
test2.log
test3.log

Selve counteren der laver filerne ligger på http://www.jart.dk/jgom/componenter/pagecount/counter.php
Jeg kan maile den hvis det er

Jeg vil helst om jeg kan hente talene på  følgende måde

--------------------------
<script type="text/javascript" src="componenter/actcounter/display.php"><!--
//--></script>
</head>

<body>
The numbers is <span><script type="text/javascript">var all = actcount_link[1]+actcount_link[3]; document.write(all);</script></span>
--------------------------
Da mine downloads countere funger sådan


evnt
--------------------------
<script type="text/javascript" src="componenter/pagecount/display.php?page=test+test1"><!--
        //--></script>
--------------------------
Avatar billede jakobdo Ekspert
15. juni 2006 - 21:52 #12
Avatar billede jesper-moeller Nybegynder
15. juni 2006 - 23:00 #13
Oki...

Dvs at jeg bliver nød til at lave en
$counterPages[] =
for hver fil ???

Damn det bliver en lang liste der skal rettes ofte


Og hvordan kalder jeg så den fil ??
Avatar billede jakobdo Ekspert
16. juni 2006 - 08:34 #14
Hvis du få din side har:

Antal Hits på denne side: <?php include('counter.php'); ?>
Avatar billede jesper-moeller Nybegynder
16. juni 2006 - 22:22 #15
Takker for din store hjælp ... og tålmodihed

Detsvære har jeg ikke kunnet få det til at funger

Jeg kan jo kun få tallet ud fra det samlede antal sider..
det jeg skal bruge er at kunne hente en sammentælling for de sider som jeg ønsker
feks test2+4 et sted og test1+2+3 et andet sted (På samme side)

derfor jeg gerne vil bruge feks <script type="text/javascript">var all = pcount[1]+pcount[3]; document.write(all);</script>

Dit eksempel og din hjælp har dog fået mig godt igang og det er lykkedes mig at komme rimligt tæt på det jeg havde håbet på detsvære har jeg et lille problem mht javascriptet i det
hvis du har tid/lyst kan du jo kigge på http://www.eksperten.dk/spm/715926 og se om du kan fortælle hvad der er galt ?

Om ikke andet har du fortjænt dine point for al din hjælp så læk venligst et svar :-)
Avatar billede jakobdo Ekspert
16. juni 2006 - 22:28 #16
Svar!
Avatar billede jesper-moeller Nybegynder
16. juni 2006 - 22:43 #17
takker og her er point ...
Takker for hjælpen indtil nu...*S*
Avatar billede jakobdo Ekspert
16. juni 2006 - 22:53 #18
Takker for point.
Avatar billede jesper-moeller Nybegynder
16. juni 2006 - 23:23 #19
Så lidt da...
Du har hjålpet mig godt på vej...*S*
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester