Seite 1 von 1

Besucherzähler

Verfasst: Fr 11. Mär 2016, 07:05
von anke
Hallo zusammen

ich habe auf meiner Seite Besuchszähler eingebaut. Auf jeder Seite einen. Nun habe ich ganz viele Textdateien, für jede Unterseite eine, die pro Seite den Besucher zählt. Das wird jetzt etwas unübersichtlich. Kann man die auch in einer Textdatei sammeln und von dort auslesen lassen?

Gruß Anke

Re: Besucherzähler

Verfasst: Mi 16. Mär 2016, 06:01
von mich78
Ja das geht schon, man müsste das Script halt dementsprechend anpassen.

Spontan fällt mir eine, die Zähler für alle Seiten in einer einzigen, gemeinsamen Textdatei zusammenzufassen.
Jede Seite erhält dann eine eine Kennung (z.b. Seitentitel) und die Anzahl der Aufrufe in der Textdatei.
Beim Seitenaufruf durchläuft man die Textdatei mit einer Schleife, schreibt alles in ein Array und erhöht den Wert der aufgerufenen Seite um 1.
Dann schreibt man das Zeug wieder in die Textdatei.

So weit die Theorie...

Wie sieht denn das jetzige Script aus?

Re: Besucherzähler

Verfasst: Mi 16. Mär 2016, 08:58
von anke
hallo micha
zurzeit sieht mein Script so aus:

Code: Alles auswählen

<?php
$fd = fopen('counter/count-alter-rahmen.txt','r+');
$count = fgets($fd,10);
if (!$count)
$count = 0;
rewind($fd);
$count++;
fwrite($fd, $count);
fclose($fd);

echo "<p>Dieses Tutorial wurde ".$count." angeschaut</p>";
?>
Dann habe ich einen Ordner, in dem ich alle Textdateien gesammelt habe. Also in diesem Fall count-alter-rahmen.txt

Gruß Anke

Re: Besucherzähler

Verfasst: Sa 19. Mär 2016, 14:15
von Arne Drews
Hallo,

Generell würde ich das in einer DB besser aufgehoben sehen!
Wenn es zwingend auf Datei-Ebene ablaufen soll, würde ich das, ähnlich wie @mich78 es schon angesprochen hat umsetzen:

Die Counter-Datei, beispielhaft:

Code: Alles auswählen

dateiname1:counter1
dateiname2:counter2
dateiname3:counter3
Verarbeitung auf allen Seiten, beispielhaft:

Code: Alles auswählen

$sFileName = pathinfo( $_SERVER['SCRIPT_FILENAME'], PATHINFO_FILENAME );
$aCounterRows = file( 'counterdatei.txt', FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES );

$aCounterCurrentSite = preg_grep( '/^' . $sFileName . '.+/i', $aCounterRows );

if ( !empty($aCounterCurrentSite) ) {

	$iCounterIndex = array_keys( $aCounterCurrentSite );
	list ( $sLabel, $iCounter ) = explode( ':', end($aCounterCurrentSite) );
	
	$aCounterRows[ end($iCounterIndex) ] = $sLabel . ':' . ++$iCounter;

	file_put_contents( 'counterdatei.txt', implode(PHP_EOL, $aCounterRows) );

}
Das geht natürlich deutlich eleganter, aber sollte für den Zweck auf die Schnelle passen.

EDIT ( zur Erklärung ):
Die Dateinamen in der Counterdatei gehören in dem Beispiel ohne Extension rein. Für startseite.html darf dort also nur startseite angegeben werden.
Das hat den Vorteil, dass es egal ist, ob man .html, .htm, .php, o.ä. verwendet.

Gruß Arne

Re: Besucherzähler

Verfasst: So 20. Mär 2016, 08:56
von anke
Super Arne
das werde ich gleich mal ausprobieren :)
Gruß Anke