Grüße,
einige kolegen und ich haben mit mühe und not eine kleine website auf die beine gestellt.
nun habe ich einen hitcounter entworfen welcher mit
ausgelöst wird.
das ?page=index steht hierfür spezifisch für die index seite. der counter hat für jede seite einen eigenen eintrag
dieser counter funktioniert auch ohne probleme wenn man die seite aktualisiert (F5 drückt). allerdings sobald man per link auf einen anderen bereich der website wechselt (bzw den "startseite" link ancklickt) zählt der counter leider doppelt... und ich habe nicht die geringste ahnung weshalb
(Link vom Ersteller entfernt)
der counter soll die gesammten aufrufe, sowie für jede person alle 24 stunden einen aufruf abspeichern.
Der Counter-code
<?php
error_reporting(E_ALL ^ E_NOTICE);
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
$unique_hours = 24; //setzen des stundenabstandes zwischen den einzelaufrufen
$page = preg_replace('/[^a-zA-Z0-9\-_\.]/','',$_GET['page']); //setzen der seite welche gecountet werden soll
$cname = 'gcount_unique_'.$page; //setzen des cookie namen
$logfile = ("log.txt"); //pfad des logfiles angeben
if(file_exists("log.txt")){
$logdata = file_get_contents($logfile);
}
$split = explode(",", $logdata); //spalten aller daten
$splitlength = count($split); //spalten der gespalteten daten in die einzelwerte
for($i = 0;$i < $splitlength;$i++){
$splitsplit[$i] = explode(";", $split[$i]);
}
for($i = 0;$i < $splitlength;$i++){ //herrausfinden welche seite gecountet werden soll
if($splitsplit[$i][0] == $page){
$findpage = $i;
}
}
$countall = $splitsplit[$findpage][1]; //counten der gesammten aufrufe
$countall++;
$splitsplit[$findpage][1] = $countall;
if (!isset($_COOKIE[$cname])){ //counten der einzelaufrufe alle 24 stunden
$countday = $splitsplit[$findpage][2];
$countday++;
$splitsplit[$findpage][2] = $countday;
header('P3P: CP="NOI NID"'); //setzen des cookie
setcookie($cname, 1, time()+60*60*$unique_hours);
}
for($i = 0;$i < $splitlength;$i++){ //zusammenfügen der einzelnen daten
$splitback[$i] = implode(";", $splitsplit[$i]);
}
$splitdone = implode(",", $splitback); //zusammenfügen aller daten
$handle = fopen($logfile, "w"); //schreiben der logs
fwrite($handle, $splitdone);
fclose($handle);
?>
Alles anzeigen
Da ich ein relativer neuling in solchen sachen bin, bitte ich darum mich freundlich auf die kleinsten fehler hinzuweisen und nicht zu streng zu sein