Besucherzähler per JavaScript auf Website?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Schicke via JavaScript einen Request an eine Serveranwendung, die für dich mit der Datenquelle kommuniziert, die den Zähler speichert. Die Datenquelle kann eine einfache Textdatei sein (vor allem dann ausreichend, wenn du nur den Zähler speicherst) oder eine Datenbank.

In deinem HTML-Dokument hast du ein Element für die Zähleranzeige:

<span id="counter-display"></span>

Mit JavaScript verschickst du den Request:

window.addEventListener("load", evt => {
  fetch("/counter")
    .then(response => response.json())
    .then(data => document.getElementById("counter-display").innerText = data.counter);
});

Hier wäre die Annahme, dass /counter auf einen Request Handler zeigt (das könnte ein PHP-Skript o.ä. sein), der prüft, ob der Nutzer schon einmal gezählt wurde und wenn ja, den Zähler inkrementiert. In jedem Fall gibt er ein Ergebnis in Form von JSON zurück:

{ "counter": 123... }

Damit niemand manuell den Handler aufrufen kann, sollte dieser zumindest prüfen, wer sein Aufrufer war (die Information steht im Request Header). Noch besser gegen häufige Aufrufe bist du mit einer ID geschützt, welche bei jedem Seitenaufruf neu generiert und an die Request URL gehängt wird. Der Handler prüft dann, ob die generierte ID der entspricht, die auch an die URL gehängt wurde.

Für die Nutzerprüfung gibt es verschiedene Möglichkeiten. Einige sind leichter manipulierbar als andere.

Bei der von dir gewählten Prüfung müsste der Nutzer bspw. leidglich den Key im Local Storage loswerden, um sich neu zählen zu lassen. Dafür würde allerdings die Speicherung der Zahl (in einer Textdatei) ausreichen.

Eine andere Vorgehensweise wäre das Speichern aller Inkrementationen in Form eines Keys in einer Datenbanktabelle. Dieser Key wird auf Serverseite ermittelt. Man könnte die IP verwenden oder sich aus Werten des UserAgent eine ID zusammenbauen (wobei darauf geachtet werden muss, dass der Key für alle Subseiten deiner Webseite gleich bleibt). Kommt ein neuer Besucher auf die Webseite, wird sein Key ermittelt, in der Datenbank nach diesem gesucht und wenn er nicht gefunden wird, der neue Key eingetragen. Für die Abfrage des aktuellen Zählstandes ist es notwendig, alle Einträge der Datenbank (am besten von der Datenbank) zählen zu lassen.

Wie eine Datenbankkommunikation ablaufen kann, ist davon abhängig, mit welcher Datenbank du arbeitest und mit welcher Technologie du deine Serveranwendung zusammenbaust (sei es PHP o.a.).

Aufgrund der weiten Verbreitung von PHP und MySQL zwei Verweise:

  • Genügend Material zu SQL findest du hier.
  • Eine Datenbankverbindung zwischen einem PHP-Skript und MySQL kannst du mit dem mysqli-Modul herstellen. Schau auf die Seiten des Manuals. Dort findest du komplette Beispiele für Anfragen und dergleichen.
Fauxton  29.07.2021, 02:11

Ich würde dafür eher EvilCookie empfehlen, damit es nicht wieder einen neuen Besucher anlegt, wenn der Benutzer LocalStorage selbst löscht. Wenn Sie EvilCookie verwenden, selbst wenn Sie die Cookies löschen, beim erneuten Besuch der Website werden die Cookies wieder mit denselben values auftauchen.

0
regex9  29.07.2021, 06:15
@Fauxton

Ich denke, es wäre hilfreich, wenn du auf die Projektseite des von dir empfohlenen Tool verlinken würdest, damit man sich darüber näher informieren kann.

0
ArduinoGeek 
Fragesteller
 31.07.2021, 02:29

Danke!

0

Du speicherst die Zahl im Browser. Du musst aber die Zahl auf dem Server speichern, also mit zum Beispiel PHP. Mit PHP kannst du dann auch die Zahl direkt einbinden. JS kann nichts serverseitig speichern, außer man lässt es mit PHP oder so kommunizieren.

Deshalb wird dein Vorhaben (Besucherzähler) nur in JavaScript nicht funktionieren.

Alternativen zu PHP wären übrigens:

NodeJS, Python, C# und weitere

ArduinoGeek 
Fragesteller
 28.07.2021, 06:08

Danke habe ich mir schon gedacht.

0