PiwikCounter veröffentlicht

Eine erste Version (0.1.1) ist nun über wordpress.org verfügbar. Derzeit funktionert leider die Internationalisierung noch nicht und auch eine Auflistung der eindeutigen Besucher ist noch nicht möglich. Letzteres scheint an Piwik selbst zu liegen, versuche aber, den Fehler zu finden und für die nächste Version zu beheben.

WordPress Plugin PiwikCounter

Derzeit arbeite ich an einem neuen Plugin für WordPress. Eine erste Version ist bereits hier im Blog aktiv und ruft für mein Blog die Anzahl der eindeutigen Besucher aus Piwik ab. Das fertige Plugin soll über das Administrationsmenü von WordPress verwaltet werden können. Hier legt man fest, auf welche Piwik-Installation das Plugin zugreifen soll. Ebenfalls hinterlegt werden ein Auth-Code um Zugriff auf die API zu haben, die Site-Id, welche die benötigte Seite identifiziert und das Datum, ab wann die Besucherzahlen abgerufen werden sollen.

Geplant ist, die Gesamtbesucherzahl bis zum Vortag abzurufen und dies nur einmal am Tag zu tun. Dieser Wert wird in der Datenbank gespeichert und mit dem Wert der Besucher des aktuellen Tages addiert. Dies geschieht aus dem Grund, weil die Abfrage eines größeren Zeitraumes auch immer mit mehr Aufwand in der Datenbank verbunden ist. Das Abfragen eines einzigen Tages, geht dagegen deutlich schneller, weshalb es bei der ersten Abfrage an einem Tag, zwei Abfragen gibt und später nur noch eine, da der erste Eintrag zwischengespeichert ist.

Ausgegeben wird das ganze dann in einem Widget, welches entweder die Gesamtbesucherzahl ausgibt, oder die Gesamtbesucherzahl und die Anzahl der Besucher des aktuellen Tages. Derzeit ist nur ersteres implementiert. Ein Termin für die Veröffentlichung steht noch nicht fest, aber es wird sicherlich das Plugin in absehbarer Zeit zum Download geben.

pLANer für WordPress

Derzeit setzen wir im NetNight2000 Verein verstärkt auf WordPress. Um auch für kommende Veranstaltung mit WordPress arbeiten zu können wird derzeit eine kleine Variante von pLANer als WordPress-Plugin umgesetzt. Hierbei wird es erst einmal nur die grundlegenden Features die wir für pLANer angedacht haben in das Plugin implementiert. Dazu zählen was die Seitenbesucht betrifft natürlich ein Anmeldeformular. Auch eine Teilnehmerliste kann abgerufen werden.

Für die Admins gibt es dann noch ein paar weitere Details. Hier können die alle Daten der Benutzer angesehen und verändert werden, wenn dies nötig sein sollte. Auch das Löschen von Teilnehmern einer Veranstaltung ist schnell erledigt. Ganz wichtig ist auch die Auswahl der aktuellen LAN-Party und die Übersicht aller registrierter Clans.

Das ganze System greift auf die Tabellen von pLANer zurück. WordPress-Tabellen müssen sich deshalb in der gleichen Datenbank befinden, wie die übrigen pLANer-Tabellen.

Durch das Plugin können wir erst einmal WordPress für den Internetauftritt verwenden. Später kann man sich dann entscheiden, ob für das Web pLANer verwendet wird oder nicht. Im Intranet selbst soll jedoch nur pLANer während einer LAN eingesetzt werden.

Formulare in WordPress-Plugins per Session absichern

Es kommt vor, dass man Formulare durch eine zufällige Zeichenfolge vor erneutem Versenden schützen möchte. Um diesen Wert zu speichern, bietet sich die Session des aktuellen Benutzers an. Auch kann dadurch niemand mit einem selbstgebastelten Formular Daten übermitteln. Eine wichtige Schwachstelle wäre dadurch geschlossen.

Will man dies jedoch in einem WordPress-Plugin machen, steht man vor dem Problem, dass WordPress keine Sessions verwendet. Man könnte natürlich auch ein Cookie verwenden, aber nicht alle Besucher lassen Cookies zu. Die Session ist also unsere erste Wahl.

An sich ist das Ganze auch recht simpel. Es reicht, wenn man per add_action() bei ‚init‘ eine simple Funktion aufruft, die prüft, ob bereits eine Session besteht und wenn nicht, diese startet. Somit haben wir eine aktive Session in die wir einen Zufallswert speichern können.

Generieren wir nun unser Formular benötigen wir eine zufällige Zahl, besser sogar eine zufällige Zeichenfolge. Diese wird im Formular als verstecktes Feld eingebunden. Beim Empfang des Formulars wird dann geprüft, ob der Eintrag des Formulars mit der Session übereinstimmt. Als erstes sollte nun der Eintrag in der Session wieder gelöscht oder geleert werden.

Man ist jedoch damit nicht auf WordPress beschränkt, dies funktioniert natürlich überall in PHP wo mit Sessions gearbeitet wird. Zur Absicherung auf jeden Fall zu empfehlen.