Dieses Addon stellt im REDAXO CMS eine Besucherzählung bereit.
Dabei werden folgende Metriken erfasst und optisch dargestellt:
Dieses Addon arbeitet OHNE clientseitige Cookies.
Die IP Adresse des Besuchers wird gehasht gespeichert.
Allerdings wird diese zu Datenschutzzwecken nicht roh gespeichert, sondern mit dem User-Agent des Besuchers gehasht.
hash = sha1(ipAdresseClient + userAgentClient)
.
Der User Agent wird nicht auf dem Server gespeichert. Um an die IP zu kommen, muss dieser Hash also aufwendig per Brute Force geknackt werden.
Die IP Adresse des Besuchers wird genutzt, um ein wiederholtes Aufrufen von Seiten nicht in die Statistik einfließen zu lassen.
Um den Datenschutz zu erhöhen kann der mitgelieferte Cronjob eingesetzt werden (benötigt das Cronjob Addon von Redaxo). Diesen am besten auf 00:05 täglich einstellen. Dadurch werden alte, nicht länger benötigte Hashes automatisch gelöscht um Datensparsamkeit zu gewährleisten (löscht alle Hashes die älter sind als der aktuelle Tag).
Um Aufrufe von Medien (Bilder, Dokumente, etc.) zu loggen. Dieses kann auf zwei Arten verwendet werden:
Erlaubt es, einen API Request zu nutzen um im Frontend oder Backend ein bestimmtes Ereigniss zu tracken (beispielsweise das Anklicken eines Links oder das Absenden eines Formulars).
Das Repository herunterladen und im Ordner redaxo > src > addons
entpacken.
Danach den Ordner in statistics
umbenennen.
oder über den Installer in Redaxo
Falls man im Frontend einen Besucher-Counter einfügen möchte klappt das mittles der folgenden Modul-Ausgabe:
<?php
use AndiLeni\Statistics\VisitorCounter;
?>
<p>Besucher: <code><?php echo VisitorCounter::getText() ?></code><p>
Der Ausgegebene Text kann dann nach Belieben gestaltet werden.
<?php
use AndiLeni\Statistics\Event;
Event::log("my_event_name");
Ein Modul anlegen
Eingabe:
<label>Downloads:</label>
REX_MEDIALIST[id="1" widget="1"]
Ausgabe:
<div class="container">
<h2>Downloads:</h2>
<table class="table">
<tr>
<th>Name</th>
<th>Link</th>
</tr>
<?php
foreach (explode(',', "REX_MEDIALIST[1]") as $img)
{
echo '<tr>';
echo '<td>'. $img .'</td>';
echo '<td><a href="https://github.com/AndiLeni/statistics/blob/main/'.rex_media_manager::getUrl('log',$img).'">Download</a></td>';
echo '</tr>';
}
?>
</table>
</div>
Ziel: Das Klicken eines Links im Frontend soll erfasst werden.
Ein Modul anlegen Eingabe:
<label>Kampagnen-Name:</label>
<input type="text" name="REX_INPUT_VALUE[1]" value="REX_VALUE[1]">
Ausgabe:
<a class="btn btn-primary" onclick="myFunction()" href="http://example.com/">Link</a>
<script>
function myFunction() {
fetch('/?rex-api-call=stats&name=REX_VALUE[1]');
}
</script>