Besucherzähler integrieren

Svend-Boettcher schrieb am 11.03.2021 um 13:32 Uhr

Grüßt Euch Ihr Lieben,

ich möchte einen Besucherzähler auf einer Webseite einbinden aber nicht einen dieser Gratis-Zähler, die man im Web findet, da dort IMMER Werbung erscheint, auch wenn sie damit Werben, keine Werbung zu schalten.

Deshalb bin ich unter fielen Lösungsvorschlägen im Netz auf diese Variante gestoßen.

Nur leider bekomme ich die im Webdesigner nicht zum laufen. Ich verstehe nicht, wo ich diese "besucher.txt" datei unterbringen soll, und wo den eigentlichen Code. Einfach im "Platzhalter" unter "body" funktioniert nicht. Weiß bitte jemand von Euch einen Rat ?

Lieben Gruß

Svend

Kommentare

BeRo schrieb am 11.03.2021 um 20:48 Uhr

[...] Ich verstehe nicht, wo ich diese "besucher.txt" datei unterbringen soll, und wo den eigentlichen Code [...]

Da hast Du Dir eine komplexe Aufgabe ausgesucht... 😚

Wichtig ist, dass Du die Site von einem Provider hosten lässt, der PHP auf dem Webserver anbietet und zulässt.
Andernfalls kannst Du den Counter nicht installieren!

Für die Installation der Codes musst Du ein wenig in die "Trickkiste" greifen, weil der PHP Session Code ganz am Anfang der HTML Seite stehen muss.
Um das zu erreichen, musst Du einen Platzhalter auf der Seite anlegen, die den Counter zeigen soll und dem den Namen "<html>" (ohne Anführungsstriche) geben. Zusätzlich muss der Platzhalter in seinem HTML Body den u. a. PHP Scriptcode bekommen:

<?php
session_set_cookie_params(21600);
session_start();
?>

Die als Parameter angegebene Zahl "21600" steht für 21600 Sekunden = 6 Stunden Wartezeit, bis ein Besucher ohne IP Adresswechsel erneut gezählt wird.

Wenn alles geklappt hat, muss der Quellcode im Kopf der exportierten HTML Seite so aussehen:

Der restliche PHP Code kommt in den HTML Body des 2. Platzhalters, den Du auf der Seite da anlegst, wo später die Counterausgabe zu sehen sein soll, also z. B. in der Fußleiste der Seite.
Der PHP Code sieht so aus:

<?php
        $file = fopen("index_htm_files/besucher.txt", "r+");
        $zaehlerstand = fgets($file, 10);
        
        if($zaehlerstand == "") {
            $zaehlerstand = 0;
        }
        if(!isset($_SESSION['counter_yes'])) {
            $zaehlerstand++;
            rewind($file);
            fwrite($file, $zaehlerstand);
            $_SESSION['counter_yes'] = true;
        }
        
        echo "<h3><font color = white><strong>Anzahl Besucher: $zaehlerstand</strong></font></h3>";
        fclose($file);
?>

In der "echo" Anweisung, die für die Anzeige der Zählerwerte sorgt, wird im Beispiel festgelegt, dass die Schrift das Überschrift Format "h3" bekommen soll und dass die Schriftfarbe "weiß" (white) sein soll.

So kann das Ergebnis aussehen, wenn die Seite online geöffnet wird

Die Textdatei "besucher.txt" kann zunächst als leere Datei angelegt werden. Sie wird über das PHP Script automatisch mit den aktuellen Zählerwerten beschrieben.
Damit der im o. a. Script angegebene Pfad funktioniert, muss die Datei im Hilfsverzeichnis des Projekts angelegt werden, damit der WD sie beim Export/Upload automatisch in das Verzeichnis "index_htm_files" überträgt.
Heißt Dein Projekt z. B. "zaehler.web", dann muss das im selben Verzeichnis anzulegende Hilfsverzeichnis "zaehler_web_files" heißen.
So kann das im Dateimanager aussehen.

Der Verzeichnisinhalt nach dem Export/Upload der Projektdatei sollte etwa so aussehen:

Die im Screenshot markierte .htaccess Datei musst Du noch mit folgendem Inhalt anlegen und auf dem Webserver speichern:

AddType application/x-httpd-php .html .htm

Damit wird sichergestellt, dass der Webserver auch HTM/HTML Seiten wie PHP Seiten parst und den enthaltenen PHP Code richtig erkennt und ausführt.
Ohne diese .htaccess müsstest Du die Endungen der HTML Seiten in PHP umbenennen. Die "index.htm" müsste also dann "index.php" heißen.
Beachte bitte, dass der Dateiname tatsächlich mit einem Punkt "." beginnen muss und keine Dateiendung hat!
Auf einem Windows PC kannst Du die Datei i. d. R. so nicht speichern. Du musst sie normalerweise direkt auf dem Webserver umbenennen.

Also, frisch ans Werk... 😉

Bevor es losgeht, kannst Du Dir hier die online Demo ansehen (klick) und hier die lauffähige WD17 prem. Projektdatei herunterladen (klick).

P.S.
Denk daran, dass Du PHP gesteuerte Seiten nicht auf Deinem PC testen kannst, wenn Du keinen eigenen Apache installiert hast. Tests können also nur online erfolgen. 😒

Zuletzt geändert von BeRo am 12.03.2021, 14:16, insgesamt 1-mal geändert.

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

Svend-Boettcher schrieb am 12.03.2021 um 12:35 Uhr

... was Du so alles weisst !!! 😎 ... jetzt bin ich aber mal gespannt ... vielen Dank BeRo, bin beeindruckt 😌

Svend-Boettcher schrieb am 12.03.2021 um 12:47 Uhr

Sollte passen oder ?

BeRo schrieb am 12.03.2021 um 12:54 Uhr

Sollte passen oder ?

Passt! 🙌

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

Svend-Boettcher schrieb am 12.03.2021 um 13:33 Uhr

Irgendwie ist da noch der Wurm drinnen

Habe genau nach Deiner Anleitung gehandelt

Svend-Boettcher schrieb am 12.03.2021 um 13:37 Uhr

Auf dem Server schaut das so aus:

Svend-Boettcher schrieb am 12.03.2021 um 13:43 Uhr

wenn ich die Internetadresse in den Firefox Browswer eingebe erscheint folgende Meldung:

BeRo schrieb am 12.03.2021 um 13:46 Uhr

Irgendwie ist da noch der Wurm drinnen

Ja, richtig. 😁

Bei der "echo" Anweisung scheint etwas schief gegangen zu sein.
So sollte sie aussehen:

echo "<h3><font color = white><strong>Anzahl Besucher: $zaehlerstand</strong></font></h3>";
        fclose($file);
?>

Da hast Du wohl etwas "unterschlagen" und stattdessen die Befehlszeile falsch abgeschlossen...

Prüf' das mal...

[...] wenn ich die Internetadresse in den Firefox Browswer eingebe erscheint folgende Meldung: [...]

Das ist ein klares Indiz dafür, dass die PHP Datei nicht erkannt wird, weil vermutlich das schließende "?>" im Script nicht gelesen wird. 😉

Edit 14:19 h
Damit Du besser nachvollziehen kannst, wie die funktionsfähigen Scriptlets aussehen und wo sie gespeichert sind, kannst Du hier die online Demo sehen (klick) und hier die lauffähige WD17 prem Projektdatei herunterladen (klick). 😉

Zuletzt geändert von BeRo am 12.03.2021, 14:19, insgesamt 3-mal geändert.

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

Svend-Boettcher schrieb am 12.03.2021 um 14:17 Uhr

Ist alles vorhanden. Auch die "echo" Anweisung ist genau so übernommen worden.

Im HTML Body des 2. Platzhalters steht ganz genau dieses hier:

 

<?php
        $file = fopen("index_htm_files/besucher.txt", "r+");
        $zaehlerstand = fgets($file, 10);
        
        if($zaehlerstand == "") {
            $zaehlerstand = 0;
        }
        if(!isset($_SESSION['counter_yes'])) {
            $zaehlerstand++;
            rewind($file);
            fwrite($file, $zaehlerstand);
            $_SESSION['counter_yes'] = true;
        }
        
        echo "<h3><font color = white><strong>Anzahl Besucher: $zaehlerstand</strong></font></h3>";
        fclose($file);
?>

BeRo schrieb am 12.03.2021 um 14:25 Uhr

[...] Im HTML Body des 2. Platzhalters steht ganz genau dieses hier:

Dann bleibt noch ein möglicher Fehler beim Einbau der PHP Session Info im Kopf der HTML Seite.
Schau Dir mal den Quellcode im Kopf der exportierten Seite an, der muss so aussehen:

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

Svend-Boettcher schrieb am 12.03.2021 um 14:34 Uhr

passt

BeRo schrieb am 12.03.2021 um 14:41 Uhr

Prüf' mal. ob Dein Provider eigene .htaccess Dateien zulässt.

Wenn der Inhalt der .htaccess korrekt ist, also so aussieht...

AddType application/x-httpd-php .html .htm

...und der Counter trotzdem nicht arbeitet, dann ändere mal die Endung der Seite mit dem Counter um in ".php".
Wenn die Seite die "index.htm" ist, dann heißt sie jetzt "index.php" und Du solltest jetzt, nach dem Öffnen im Browser, den Counter sehen...

Zuletzt geändert von BeRo am 12.03.2021, 14:42, insgesamt 1-mal geändert.

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

Svend-Boettcher schrieb am 12.03.2021 um 15:08 Uhr

Ich habe die Endung auf .php umgeschrieben. Jetzt bekomme ich folgendes Ergebnis:

Also auch keinen Counter!

Im Quellcode sieht das ganze dann so aus:

Wenn ich die Endung wieder auf .htm umstelle, sieht der Quellcode so aus:

... und wieso eigentlich ... _params (10) ; und nicht wie im Platzhalter ..._params (21600) ; ???

BeRo schrieb am 12.03.2021 um 15:54 Uhr

Im Quellcode sieht das ganze dann so aus:

So sollte der PHP Code in der HTML Datei aussehen, wenn Du die Site lokal exportierst und den Quellcode anzeigst.

Wenn Du den Quellcode der online geöffneten Seite anzeigst, werden alle PHP Scriptlets vom Webserver zurückgehalten, die siehst Du also dann nicht mehr.

[...] wieso eigentlich ... _params (10) [...]

Der Wert wird manuell vom User (also von Dir) eingestellt, wenn das PHP Script angelegt wird.

Offenbar hast Du noch ein paar "Klopse" eingebaut. Eventuell ist auch die .htaccess nicht "sauber"!?
Hier ist also akribische "Forschung" angesagt.

Vergleiche Deine Projektarbeit doch einfach mal mit der Demo Projektdatei, die ich Dir oben zum Download angeboten habe, Vielleicht wird die Fehlersuche dann einfacher. 😉

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

Svend-Boettcher schrieb am 12.03.2021 um 16:03 Uhr

Ich komme der Sache immer näher ...

Zunächst habe ich in die .htaccess folgenden Inhalt angelegt:

AddType application/x-httpd-php74 .php

Jetzt sieht der Quellcode im Kopf der exportierten HTML Seite auch so aus, wie er aussehen soll.

Ich bekomme keine Fhlermeldung mehr von Browser ... nur es wird noch kein Zählerstand angezeigt ...

BeRo schrieb am 12.03.2021 um 16:20 Uhr

[...] Zunächst habe ich in die .htaccess folgenden Inhalt angelegt: AddType application/x-httpd-php74 .php [...]

Hmmm, wer lesen kann... 😘
Warum hast Du nicht die komplette Zeile eingetragen?

AddType application/x-httpd-php .html .htm

Mit Deiner Version der .htaccess Anweisung, die unvollständig- und obendrein fehlerhaft ist, kann der Webserver nichts brauchbares anfangen. 😕

[...] Jetzt sieht der Quellcode im Kopf der exportierten HTML Seite auch so aus, wie er aussehen soll. [...]

Die .htaccess Datei hat nichts mit dem tatsächlichen Inhalt der HTML Seiten zu tun.
Der vermeintliche Inhalt, also das was Du als Quellcode siehst, wird allerdings vom Webserver ohne PHP Scriptlets ausgeliefert, wenn er die Dateien als PHP Dateien erkennt. In deinem Fall ist die .htaccess Datei fehlerhaft, der Webserver erkennt also die HTML Datei nicht als PHP Datei und liefert folglich die PHP Scriptlets aus, ohne sie auszuführen. Das was Du als Erfolg siehst, ist in Wirklichkeit der "Erfolg" eines Fehlers!

[...] Ich bekomme keine Fhlermeldung mehr von Browser ... nur es wird noch kein Zählerstand angezeigt ...[...]

Warum das so ist, dass hast Du gerade gelesen? 😍

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

Svend-Boettcher schrieb am 12.03.2021 um 17:01 Uhr

Ich hatte in die .htaccess datei urprünglich so wie Du sagtest diese Zeile eingetragen:

AddType application/x-httpd-php .html .htm

und der Zähler funktionierte nicht. Dann habe ich ein wenig bei meinem Hostanbieter Strato gelesen, dass um php dateien korrekt anzeigen zu können, solle man in die .htaccess Datei folgende Zeilen schreiben:

AddType application/x-httpd-php74 .php

das habe ich dann gemacht und immerhin war dann die Browser-Fehlermeldung weg. Außerdem wurde danach die Anzahl Besucher ohne dieses "fclose($file); ?>" angezeigt.

Jetzt habe ich die .htaccess Datei wieder so bestückt, wie Du gesagt hast, also mit:

AddType application/x-httpd-php .html .htm

... und siehe da:

es ist jetzt alles genau so, wie Du es beschrieben hast und es sind Deine Datein auf meinem Server.

BeRo schrieb am 12.03.2021 um 17:14 Uhr

[...] es ist jetzt alles genau so, wie Du es beschrieben hast [...]

Dass anstelle des Zählerstands, der Name der Variable "$zaehlerstand" zu sehen ist, das beweist, dass die .htaccess Datei entweder einen fehlerhaften Inhalt hat, oder dass sie vom Webserver nicht korrekt interpretiert wird.

Der Zählerstand wird auf jeden Fall angezeigt, wenn Du die von mir übernommene Demodatei "index.htm" auf dem Webserver umbenennst in "index.php"!
Denk daran, nach dem Öffnen der Datei im Browser den Cache zu löschen (STRG + F5), damit Der Browser die Seite tatsächlich vom Webserver holt und nicht aus dem Cache... 😉

Edit 17:22 h
Das .htaccess Problem kann eventuell leichter gelöst werden, wenn Du die .htaccess Datei aus meiner Demo nimmst und die auf Deinen Webserver kopierst.
Lade Dir dazu nochmal die Projektdatei (ZIP Archiv) herunter und übernimm die .htaccess daraus (klick)

Zuletzt geändert von BeRo am 12.03.2021, 17:22, insgesamt 1-mal geändert.

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

Svend-Boettcher schrieb am 12.03.2021 um 17:50 Uhr

Du hast Recht, wenn ich die index-Datei in php wandla, dann funktioniert es !

Ich danke Dir vielmals

 

Svend-Boettcher schrieb am 13.03.2021 um 12:28 Uhr

Hallo BeRo, isch habe große Problem 😬

Besucherzähler funktioniert jetzt hervorragend ! ... auf der Seite, die ich in .php umbenannt habe.

Nun besteht die Internetseite allerding aus mehreren Seiten. Wenn ich nun also eine neue Seite öffnen möchte (nennen wir sie mal "Über uns") dann bekomme ich diese Meldung:

Benenne ich die "Über uns" Seite um in .php, dann bekomme ich diese Meldung:

Ist das nicht so, dass mit der der Datei .htaccess (AddType application/x-httpd-php .html .htm)

jetzt beite Varianten .htm und .php erkannt werden sollten ?

Lieben Gruß

Svend

marboe schrieb am 13.03.2021 um 12:59 Uhr

Benenne ich die "Über uns" Seite um in .php, dann bekomme ich diese Meldung:

Du hast aber leider die htm aufgerufen und nicht die Seite mit php 😁

D.h. wenn du eine Seite umbenennst im Projekt mit Endung .php, dann musst du auch die Links anpassen. Das ist kein Selbstläufer. Gruß Marboe

Svend-Boettcher schrieb am 13.03.2021 um 13:11 Uhr

Schon klar, aber der webdesigner gibt ja die Seiten nur mit der Endung .htm raus oder kann ich irgendwo einstellen, dass der Export in .php stattfinden soll ?

 

Svend-Boettcher schrieb am 13.03.2021 um 13:18 Uhr

Wenn ich zum Beispiel ein Menü erstelle mit den Buttons "Seite 1" "Seite 2" "Seite 3" "Seite 4" dann verlinke ich den Butten "Seite 2" auch mit derselbigen:

und die hat dann ja beim Export die Endung .htm

Svend-Boettcher schrieb am 13.03.2021 um 13:19 Uhr

Wenn ich sie nun auf dem Server umbenenne in .php, dann habe ich halt dieses Problem: