Geschrieben von izskisurfer am 12.04.2004, 17:31

Dieser Counter ähnelt dem obrigen zeichnet jedoch die IPs auf und jeder User wird nur alle 24 Stunden gezählt! Er kommt ohne MySQL DB aus und besteht aus einer Datei + einer FileDB:
mycounter.php:

<html>
<body>
Diese Seite wurde bisher
<script language="php">
// warum nicht <? ? ganz einfach weil man php auch so einbinden kann ;-)
$id = "mycounter"; //FileDB Dateiname ohne endung
$verzeichnis = "counter/"; //FileDB Verzeichniss
$datFile = $id.".dat"; //name plus endung der datei in der die anzahl gespeichert wird
$ipFile = $id.".ip"; //name plus endung der datei in der die ips gespeichert werden
$heute = time(); //die aktuelle anzahl der sekunden seit dem 1.1.1970 (Unix Timestamp [wird nur noch bis zum 19.1.2038 funzen, denn dann ist die zahl kein integer mehr und unix wird zugrunde gehen ;-)])
$treffer = false; //$treffer wird auf false gesetzt (wird später benötigt!)
$ip = $_ENV["REMOTE_ADDR"]; //in $_ENV["REMOTE_ADDR"] ist die ip des users gespeichert!
if(file_exists($verzeichnis.$datFile)) { //falls die datei mit der anzahl existiert geschieht folgendes:
$dateiInhalt = file($verzeichnis.$datFile); //einlesen der .dat Datei
$zaehler = $dateiInhalt[0]; //$zahler bekommt die anzahl der Besucher aus der .dat
} else { //falls .dat datei nicht existiert folgendes:
$file = fopen($verzeichnis.$datFile, "w+"); //anlegen der .dat Datei
fclose($datFile); //Schliesen der .dat Datei
$zaehler = 0; //und zähler auf null setzten, da .dat Datei leer war!
}
if(!file_exists($verzeichnis.$ipFile)) { //falls .ip Datei nicht existiert (!... bedeutet nicht):
fclose(fopen($verzeichnis.$ipFile, "w")); //.ip datei anlegen!
}
$besucher = file($verzeichnis.$ipFile); // $besucher wird ein Array mit den ganzen zeilen der .ip Datei zugewiesen ($besucher[0] ist 1. zeile usw.!
for($i=0;$i<count($besucher);$i++) { // solange der schleifenzäler $i < der anzahl der zeilen der .ip datei ist wird folgendes wiederholt und $i jeweils um 1 erhöht!
$test = explode("=", $besucher[$i]); //jede zeile wird in die ip und die zeit zerlegt!
if($test[0] == $ip) { //prüfen ob Userip bereitz existiert!
if($test[1] < $heute) { //wenn ja dann prüfen ob die zeit älter als die jetzige ist
$besucher[$i] = ""; //wenn ja wird die zeile mit der ip gelöscht!
} else { //falls die zeit > oder = der jetzigen ist:
$treffer = true; //wird $treffer auf true gesetzt!
break; //und die Schleife beendet und mit dem Skript fortgefahren!
}
}
}
if(!$treffer) { //falls treffer false ist:
$zaehler++; //zähler um eins erhöhen
$besucher[count($besucher)] = $ip."=".($heute+86400)."\n"; //und an den inhalt der .ip datei die ip des users, gefolgt von einem = und der jetzigen zeit plus 24 Stunden angehängt
}
$IPdatei = fopen($verzeichnis.$ipFile, "w+"); //.ip Datei offnen bzw. anlegen!
fwrite($IPdatei, implode("", $besucher)); //Den neuen inhalt in die .ip Datei schreiben!
fclose($IPdatei); //Datei schließen
$file = fopen($verzeichnis.$datFile, "w+"); //.dat Datei öffnen bzw. anlegen
fwrite($file, $zaehler); //neuen Inhalt in die .dat Datei schreiben!
fclose($file); //Datei schließen
echo $zaehler; //Anzahl der besucher ausgeben!
</script>
mal besucht.
</body>
</html>

Recht viel Aufwand aber es lohnt sich!
Geht natürlich auch MySQL basiert!
Hoffe es funzt alles ;-)
Bei Fragen oder sonstigem an counter@zansinger.de.tk mailen!
Viel Spaß damit!

greetz Ingo!

Bewertung Anzahl
6
20,0 %
1 Bewertungen
5
20,0 %
1 Bewertungen
4
20,0 %
1 Bewertungen
2
40,0 %
2 Bewertungen