Zum Inhalt springen.
Zum Seitenanfang springen.
Du befindest Dich genau hier: Home > Computer > Coding > PHP - Counter.

PHP - Counter:

Der Counter dieser Website ist hier an der linken Seite zu sehen. Es wird keine Datenbank eingesetzt. Der Counter besteht aus einer PHP-Datei, der counter.php. Der Quelltext dieser Datei ist folgender:

<?

// Counter Version 1.1 vom 01.08.2010


// Einstellmöglichkeit ob bei dem Auftreten eines Fehlers eine Email gesendet werden soll.


$emailsenden = "On";


// Funktionen zu diesem PHP-File


function Counter_speichern($dateiname, $dateiinhalt, $wert) {

global $emailsenden;

if (isset($wert)) {

Schreiben($dateiname, $dateiinhalt, $wert);

}

else {if ($emailsenden == "On") {mail ( 'counter@datenschwamm.de' , 'Counter ' . $dateiname . ' wurde 1x nicht gespeichert.' ,

'Der im Betreff genannte Counter konnte einen Eintrag nicht vornehmen.' , 'From:counter@datenschwamm.de');}}

}



function Fehlerbehandlung_Leere_Datei($dateiname, $dateiinhalt) {

global $emailsenden;

$backupdateiname = $dateiname ."backup";

$dateiinhalt = @fopen($dateiname,"r");

$wert = @fread ($dateiinhalt,filesize($dateiname));

fclose($dateiinhalt);

$dateiinhalt = @fopen($backupdateiname,"r");

$backupwert = @fread ($dateiinhalt,filesize($backupdateiname));

fclose($dateiinhalt);

if ($backupwert > $wert) {

$dateiinhalt = @fopen($dateiname, "w");

flock($dateiinhalt,2);

fwrite($dateiinhalt, $backupwert);

flock($dateiinhalt,3);

fclose($dateiinhalt);

}

if ($emailsenden == "On") {mail ( 'counter@datenschwamm.de' , 'Restore für den Counter ' . $dateiname . ' vorgenommen.' ,

'Der im Betreff genannte Counter ist ausgefallen und wurde auf das Backup zurückgesetzt. Der Wert ist '. $backupwert .'.' ,

'From:counter@datenschwamm.de');}


}

function Anlegen($dateiname, $dateiinhalt, $wert) {

global $emailsenden;

$dateiinhalt = fopen($dateiname, "w");

fputs($dateiinhalt,$wert);

fclose($dateiinhalt);

}

function Schreiben($dateiname, $dateiinhalt, $wert) {

global $emailsenden;

if ($wert >0) {

$dateiinhalt = @fopen($dateiname, "w");

flock($dateiinhalt,2);

fwrite($dateiinhalt, $wert);

flock($dateiinhalt,3);

fclose($dateiinhalt);

}

$backupdateiname = $dateiname ."backup";

if (!file_exists($backupdateiname)) {

Anlegen($backupdateiname, $dateiinhalt, "0");

}

$dateiinhalt = fopen($backupdateiname,"r");

$backupwert = @fread ($dateiinhalt,filesize($backupdateiname));

fclose($dateiinhalt);

if ($backupwert < $wert+1) {

$backupwert++;

$dateiinhalt = @fopen($backupdateiname, "w");

flock($dateiinhalt,2);

fwrite($dateiinhalt, $backupwert);

flock($dateiinhalt,3);

fclose($dateiinhalt);

}

}



// Zählt die Gesamtbesucher mit Cookie


if ($_SERVER['SCRIPT_NAME'] == "/index.php"){

$dateiname = "countalle.txt";

if (!file_exists($dateiname)) {

Anlegen($dateiname, $dateiinhalt, "1");

}

}

else {$dateiname = "../countalle.txt";}

$dateiinhalt = fopen($dateiname,"r");

$counter = @fread ($dateiinhalt,filesize($dateiname));

fclose($dateiinhalt);

$besucher = $_COOKIE['besucherds'];

if (!isset($besucher)) {

setcookie ("besucherds","ja");

$counter++;

Counter_speichern($dateiname, $dateiinhalt, $counter);

}


if (filesize($dateiname) <= 0) {

Fehlerbehandlung_Leere_Datei($dateiname, $dateiinhalt);

}


$datumcounterstart = mktime(11, 30, 0, 8, 1, 2010);

$divident = (time() - $datumcounterstart)/60/60/24;


$counterdurchschnitttgl = $counter / $divident;

$besucherheute = "besucher_am_" . strftime("%d.%m.%Y", time());

if ($_SERVER['SCRIPT_NAME'] == "/index.php"){

$dateiname = "stats/$besucherheute.txt";}

else {$dateiname = "../stats/$besucherheute.txt";}


if (!file_exists($dateiname)) {

Anlegen($dateiname, $dateiinhalt, "0");

}


$dateiinhalt = @fopen($dateiname,"r");

$counterbesucherheute = @fread ($dateiinhalt,filesize($dateiname));

@fclose($dateiinhalt);

$besucher = $_COOKIE['besucherds'];

if (!isset($besucher)) {

$counterbesucherheute++;

Counter_speichern($dateiname, $dateiinhalt, $counterbesucherheute);

}

if (@filesize($dateiname) <= 0) {

Fehlerbehandlung_Leere_Datei($dateiname, $dateiinhalt);

}



// Zählt die Seitenaufrufe dieser Seite

$OffeneSeite = str_replace("/","",$_SERVER['SCRIPT_NAME'] );

$OffeneSeite = str_replace(".php","",$OffeneSeite );

$dateiname = "counter" . $OffeneSeite .".txt";


if (!file_exists($dateiname)) {

Anlegen($dateiname, $dateiinhalt, "0");

}

$dateiinhalt = fopen($dateiname,"r");

$counterseitenhier = @fread ($dateiinhalt,filesize($dateiname));

fclose($dateiinhalt);


$counterseitenhier++;

Counter_speichern($dateiname, $dateiinhalt, $counterseitenhier);

if (filesize($dateiname) <= 0) {

Fehlerbehandlung_Leere_Datei($dateiname, $dateiinhalt);

}


// Zählt die Seitenaufrufe insgesamt


if ($_SERVER['SCRIPT_NAME'] == "/index.php"){

$dateiname = "countseitenalle.txt";

if (!file_exists($dateiname)) {

Anlegen($dateiname, $dateiinhalt, "0");

}

}

else {$dateiname = "../countseitenalle.txt";

}


$dateiinhalt = fopen($dateiname,"r");

$counterseiten = @fread ($dateiinhalt,filesize($dateiname));

fclose($dateiinhalt);

$counterseiten++;


Counter_speichern($dateiname, $dateiinhalt, $counterseiten);

if (filesize($dateiname) <= 0) {

Fehlerbehandlung_Leere_Datei($dateiname, $dateiinhalt);

}

?>


Diese Datei wird von jeder Seite aus mit include ("../include/counter.php"); aufgerufen. Dort wo das Ergebnis des Counters angezeigt wird, passiert dies wie folgt:

Besucher
...heute: ',number_format($counterbesucherheute , 0, ',', '.'),'
...Ø am Tag: ',number_format($counterdurchschnitttgl , 0, ',', '.'),'
...insgesamt: ',number_format($counter, 0, ',', '.'),'

Seitenaufrufe
...dieser Seite: ', number_format($counterseitenhier, 0, ',', '.') ,'
...insgesamt: ', number_format($counterseiten, 0, ',', '.'),'

(Seit ',strftime("%d.%m.%Y", $datumcounterstart),')