Besucherzähler

Antworten
anke
Beiträge: 206
Registriert: Di 19. Aug 2014, 15:24
Kontaktdaten:

Besucherzähler

Beitrag von anke » Fr 11. Mär 2016, 07:05

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

mich78
Beiträge: 46
Registriert: Sa 11. Okt 2014, 22:08

Re: Besucherzähler

Beitrag von mich78 » Mi 16. Mär 2016, 06:01

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?

anke
Beiträge: 206
Registriert: Di 19. Aug 2014, 15:24
Kontaktdaten:

Re: Besucherzähler

Beitrag von anke » Mi 16. Mär 2016, 08:58

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

Benutzeravatar
Arne Drews
Beiträge: 8
Registriert: Sa 19. Mär 2016, 13:34
Kontaktdaten:

Re: Besucherzähler

Beitrag von Arne Drews » Sa 19. Mär 2016, 14:15

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

anke
Beiträge: 206
Registriert: Di 19. Aug 2014, 15:24
Kontaktdaten:

Re: Besucherzähler

Beitrag von anke » So 20. Mär 2016, 08:56

Super Arne
das werde ich gleich mal ausprobieren :)
Gruß Anke

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast