Supportnet / Forum / Skripte(PHP,ASP,Perl...)
zugriffszähler in txt schreiben
Frage
hallo zusammen
hat jemand schon mal ein php counter skript geschrieben bei dem die anzahl zugriffe nach Tagen bzw. in ein txt file geschrieben werden?
Resultat bzw:
03.03.2002 = 145
04.03.2002 = 234
05.03.2002 = 225
würde schon genügen!
wäre super wenn jemand helfen könnte!
Antwort 1 von abc123
Hallo,
hier das Skript, das die Zugriffe auf eine beliebige PHP-Seite zählt.
In jeder Seite, in der gezählt werden soll, mußt Du folgende zwei Zeilen einfügen:
$COUNTER_FILE = "access.log";
include("counter.php");
Der Dateiname "access.log" ist selbstverständlich beliebig. Es könnte auch eine Datei im Unterverzeichnis sein.
z.B:
$COUNTER_FILE = "./logs/index.log";
ACHTUNG! Es wird nicht geprüft, ob das Verzeichnis existiert!!! Ein neues wird auch nicht angelegt.
Die Zählerdatei wird angelegt, wenn nicht vorhanden.
--- Datei: counter.php ------------------------
<?php
if(!isset($COUNTER_FILE))
die("<b>Diese Datei darf nicht direkt Aufgerufen werden.</b>");
counter($COUNTER_FILE);
function counter($fileName) {
define("DATE_FORMAT", "d.m.Y");
define("DELIMITER", "=");
$lockFileName = $fileName . ".lock";
while(true) {
while(file_exists($lockFileName));
$lockFile=fopen($lockFileName, "w");
if($lockFile) {
fclose($lockFile);
break;
}
}
$today = date(DATE_FORMAT);
if(file_exists($fileName) && filesize($fileName)) {
$fileContents = file($fileName);
$arraySize = count($fileContents);
list($lastDate, $lastCount) = split(DELIMITER, trim($fileContents[$arraySize-1]));
if($lastDate == $today)
$fileContents[$arraySize-1] = $today . DELIMITER . ++$lastCount;
else
array_push($fileContents, $today . DELIMITER . "1");
}
else
$fileContents = array($today . DELIMITER . "1");
$file = fopen($fileName, "w");
for($i=0; $i<count($fileContents); $i++)
fputs($file, trim($fileContents[$i])." ");
fclose($file);
unlink($lockFileName);
}
?>
Gruss,
Michael
hier das Skript, das die Zugriffe auf eine beliebige PHP-Seite zählt.
In jeder Seite, in der gezählt werden soll, mußt Du folgende zwei Zeilen einfügen:
$COUNTER_FILE = "access.log";
include("counter.php");
Der Dateiname "access.log" ist selbstverständlich beliebig. Es könnte auch eine Datei im Unterverzeichnis sein.
z.B:
$COUNTER_FILE = "./logs/index.log";
ACHTUNG! Es wird nicht geprüft, ob das Verzeichnis existiert!!! Ein neues wird auch nicht angelegt.
Die Zählerdatei wird angelegt, wenn nicht vorhanden.
--- Datei: counter.php ------------------------
<?php
if(!isset($COUNTER_FILE))
die("<b>Diese Datei darf nicht direkt Aufgerufen werden.</b>");
counter($COUNTER_FILE);
function counter($fileName) {
define("DATE_FORMAT", "d.m.Y");
define("DELIMITER", "=");
$lockFileName = $fileName . ".lock";
while(true) {
while(file_exists($lockFileName));
$lockFile=fopen($lockFileName, "w");
if($lockFile) {
fclose($lockFile);
break;
}
}
$today = date(DATE_FORMAT);
if(file_exists($fileName) && filesize($fileName)) {
$fileContents = file($fileName);
$arraySize = count($fileContents);
list($lastDate, $lastCount) = split(DELIMITER, trim($fileContents[$arraySize-1]));
if($lastDate == $today)
$fileContents[$arraySize-1] = $today . DELIMITER . ++$lastCount;
else
array_push($fileContents, $today . DELIMITER . "1");
}
else
$fileContents = array($today . DELIMITER . "1");
$file = fopen($fileName, "w");
for($i=0; $i<count($fileContents); $i++)
fputs($file, trim($fileContents[$i])." ");
fclose($file);
unlink($lockFileName);
}
?>
Gruss,
Michael
Antwort 2 von danny77
Herzlichen Dank Michael
Da haste mir 3 Stunden Arbeit erspart.
gruss
danny77
Da haste mir 3 Stunden Arbeit erspart.
gruss
danny77

