jphpx ermöglicht die Einbindung von benutzerdefinierten Codes in Joomla 4.x und Joomla 5.x CMS Systemen. Mit jphpx lassen sich Scripte in PHP, HTML und JavaScript in Modulpositionen, Artikel, Kategorien und benutzerdefinierte Modulen von Joomla einbinden. Auch statische HTML- und TXT-Seiten können eingesetzt werden. Ein voller Zugriff auf Joomla Variablen, Funktionen und Konstanten mit PHP-Skripten ist dabei möglich.

Code kann aus dem Filesystem und der Joomla Datenbank bereitgestellt werden. Die mitgelieferte jphpx Komponente ermöglicht die Verwaltung von Code, der in dem Datenbank Repository gespeichert ist. Dabei wird ermöglcht:

  1. beliebigen Code in das Datenbanksystem hochzuladen
  2. Zugriffsrechte zu definieren bzw.zu ändern
  3. Code zu aktualisieren
  4. Code zu löschen
  5. Anwendungen bereitzustellen, um den definierten Code einzusetzen

Damit werden die Möglichkeiten von jphpx und die Sicherheit des Zugriffs auf den verwendeten Code wesentlich verbessert.

Wer ganz spezielle Komponenten für seine Joomla-Website sucht und bei vorgefertigten Lösungen nicht fündig wird, kann mit jphpx die verschiedensten Lösungen selbst erzeugen. Egal ob es um die Einbettung von automatischen Umrechnung von Preisen in andere Währungen, die dynamische Darstellung von Inhalten einer Datenbank geht oder auch der Einsatz von größeren Web-Anwendungen, können individuelle Komponenten problemlos erstellt werden. Die Bedienung von jphpx ist trotz dieser Vielfalt an Möglichkeiten sehr einfach. Die Erweiterung ist kostenlos und unter freier Software-Lizenz (GNU GPLv2) erhältlich.

 

1. Installation des Pakets

Sie können jphpx über die Methode 'Aus Webkatalog installieren' auf Ihre Joomla-Site installieren, da jphpx in der Extensions-Datenbank von Joomla verfügbar ist. Alternaiv dazu führen Sie folgende Installations Schritte aus:

  1. Laden Sie die jphpx Installationsdatei von meiner Website herunter
  2. Melden Sie sich bei Ihrem Joomla als Administrator an
  3. Wählen Sie im Menü: Erweiterungen >> Verwalten >> Installieren
  4. Wählen Sie die Registerkarte: Paketdatei hochladen
  5. Klicken Sie auf die Schaltfläche Datei auswählen
  6. Wählen Sie die Paketdatei aus, die Sie zuvor heruntergeladen haben
  7. Der Upload und die Installation beginnen automatisch

2. Bereitstellung der jphpx Komponente

Seit der Version 1.3.0 stellt das jphpx System Package auch eine Komponente zur Verfügung. Sie können hiermit über "Komponenten"->"jphpx Anwendungen" ihre php-Scripte im Admin Backend definieren und damit dann auch einsetzen.

3. Bereitstellung des jphpx Moduls

Mit der Version 1.3.3 stellt das jphpx System Package auch ein Modul zur Verfügung. Sie können hiermit z.B. eigene php-Anwendungen oder php-Code als Joomla Modul einsetzen, ohne selbst ein Joomla Module entwickeln und erstellen zu müssen.

4. Konfiguration des Plugins

Nach der Installation ist das jphpx System Plugin noch nicht konfiguriert. Wählen Sie deshalb in der Administrator Konsole den Menupunkt "Erweiterungen->Plugins" aus und öffen Sie das System Plugin jphpx. Dort überprüfen/ändern Sie folgendes:

  • Status - Prüfen Sie, ob der Status "Aktiviert" anzeigt.
  • Optionaler Pfad Präfix - Optionaler Pfadpräfix zur Code-Datei. Es wird dem einzuschließenden Dateipfadnamen vorangestellt. Wenn es leer gelassen wird, ist es identisch mit Joomla! Wurzelverzeichnis.
  • Nur DB-Zugriff - Wenn auf Ja gesetzt, kann nur der in der Datenbank gepeicherte Code verwendet werden.
  • Edit App erlauben - Wenn auf Ja gesetzt, wird das Plugins bei Editor Anwendungen ausgeführt.
  • Benutzergruppe - Angabe der Benutzergruppe für den Zugriff auf jphpx Code Entries falls der Zugriff nicht "public" ist
  • Ajax absichern - hiermit kann man Ajax Variablen die mit "$_GET", "$_POST" oder "$_REQUEST" geliefert werden, absichern, um böswilligen oder fehlerhaften Code auszuschliessen.
  • Default Typen Prüfung festlegen, welche Prüfung für die Request Parameter durchgeführt werden soll, wenn keine Typenprüfung über den Request Parameter "check_type" angefordert wurde.

Damit haben Sie die Installation komplettiert.
jphpx ist die ideale Lösung für die
  • einfache und schnelle Einbindung von intelligenten Javascript-, PHP- und HTML-Skripten in Ihre Joomla! Inhalte.
  • schnelle Entwicklung nicht nur kleiner und einfacher angepasster Module und Plugin-Lösungen auf Basis von PHP, Javascript und HTML-Inhalten, Formulareinbindung und vieles mehr. Aber auch für den Einsatz komplexerer Lösungen einschließlich Datenbankanwendungen, ohne dass dafür eine eigene Joomla Komponente oder ein Joomla Module entwickelt werden muss.

jphpx kann Code aus dem Filesystem aber auch aus seiner Datenbank Tabelle zur Verfügung stellen. Für das Laden und die Verwaltung des jeweilgen Codes kann man die Komponente von jphpx verwenden. Sehen Sie sich hier in einem Bildschirmfoto die Benutzeroberfläche des jphpx Anwendungen an. Die Komponente ermöglicht die Verwaltung und den Einsatz von Code, der in dem Datenbank Repository gespeichert ist. Dabei wird ermöglicht:
  1. beliebigen Code in das Datenbanksystem zu laden
  2. Zugriffsrechte zu definieren bzw.zu ändern
  3. Code zu aktualisieren
  4. Code zu löschen
  5. Anwendungen bereitzustellen, um den definierten Code einzusetzen

Einsatz und Verwendung

  1. Über den Menupunkt "Komponenten" im Administrator Backend selektiert man die Option "jphpx Anwendung" bzw. "jphpx Code Entry". Damit wird die Komponente aufgerufen und man kann nun mit dem Button "Neu" eine neue jphpx Anwendung definieren. Dafür muss ein Titel der Anwendung, die Quelle (der Pfad und der Filename), der Zugriff und die Aktivierung eingetragen werden. Mit dem Button "Speichern" wird der neue Code Entry nach erfolgreichem Speichern verfügbar.
  2. Richten sie dann einen Zugriff auf diese Anwendung über "Menus" ein. Wählen Sie dabei für "Menüeintragstyp" den aus den angebotenen Typen "jphpx Anwendungen -> Application" und selektieren Sie dann aus jphpx Anwendungen die gewünschte jphpx Application.
  3. Nach dem Speichern ist die Anwendung dann sofort verfügbar.
Wie man eine jphpx Anwendung einrichten und einsetzen kann, ist hier im Detail dargestellt.
Sie können PHP und jede Art von HTML-, CSS- und JavaScript-Code direkt in Ihre Inhalten einbetten. Nicht nur in Ihren Artikeln, sondern auch in Kategorien, Modulen, Komponenten, dem Kopf der HTML-Seite und vieles mehr. Ihr benutzerdefinierter Code wird einfach über das jphpx plugin tag eingfügt. Das einzige, was Sie tun müssen, ist, das jphpx Plugin Tag in den jeweiligen Inhalt einzufügen. Die Syntax des Plugin-Tags ist sehr einfach: Das Plugin wird mit einer geschweiften Klammer und dem Namen "jphpx" erkannt und mit einer geschweiften Klammer beendet:
{jphpx .... }
. Die Quelle Ihres Codes wird dann innerhalb eckiger Klammern definiert:
{jphpx [.. ihr code ]}
Code kann über das File System und aus der jphpx-Datenbank Tabelle geladen werden. Für das Laden aus dem Filesystem wird einfach der Pfad und der Dateiname angegebn (z. B.):
{jphpx [php-apps/games/sudoku.php]}
Einfacher wird es, wenn der Code in der jphpx Datenbank Tabelle verfügbar ist. Hier wird nur die Id-Nummer des in der Datenbank Tabelle gepeicherten Codes mit einem vorangestellten Sterns angegeben.
{jphpx [*10]}

Mit der Version 1.3.3 stellt das jphpx System Package auch ein Modul zur Verfügung. Sie können hiermit z.B. eigene php-Anwendungen oder php-Code als Joomla Modul einsetzen, ohne selbst ein Joomla Module entwickeln und erstellen zu müssen.

Hinweis: Beim Update der Version 1.3.2 nach Version 1.3.3 durch den Joomla Updater wird das jphpx Modul nicht installiert, sondern nur über einen Re-Install des Jphpx Pakets oder einen Download und die Installation des jphpx Moduls.

Einsatz und Verwendung

  1. Über den Menupunkt "Komponenten" im Administrator Backend selektiert man die Option "jphpx Anwendung" bzw. "jphpx Code Entry". Damit wird die Komponente aufgerufen und man kann nun mit dem Button "Neu" eine neue jphpx Anwendung für den Einsatz eines Moduls definieren. Dafür muss ein Titel der Anwendung, die Quelle (der Pfad und der Filename), der Zugriff und die Aktivierung eingetragen werden. Mit dem Button "Speichern" wird der neue Code Entry nach erfolgreichem Speichern verfügbar.

  2. Erstellen Sie nun ein Modul mit dieser jphpx Anwendung (dem jphpx Code Entry). Über die Menupunkte "System->"Site Module" im Administrator Backend wählen Sie "Neu" für ein neues Joomla Modul. Selektieren Sie dann aus der Liste der verfügbaren Modulen das jphpx Module . In der Anzeige des jphpx Moduls selektieren sie den gewünschten jphpx Code Entry und konfigirieren Sie die weiteren notwendigen Optionen für den Einsatz des Moduls. Nach dem Speichern wird das neue Modul dann auf Ihre Website angezeigt.

Im Web sind tausende von php-Anwendungen, Anwendungsbeipielen oder Code-Snippets verfügbar, von denen einige sicherlich gewüschte Funktionen abdecken. Es lohnt sich da genauer hinzusehen und den Code unter Joomla zu testen. Dabei soltte man einiges beachten bzw. bedenken.

Zuerst das Allerwichtigste: sichern Sie den Code ihrer Scripte gegen den Zugriff von Aussen. Dazu fügen Sie als erste Zeile in ihr Script folgende php-Direktive ein:

defined('_JEXEC') or die('Restricted access');
Damit wird verhindert, dass ihr php-Script ausserhalb der Joomla Umgebung aufgerufen werden kann.

Mit dem Einsatz des jphpx Systems nutzt man die Moglichkeit php-Scripte unter dem Dach von Joomla ausführen zu konnen. Damit hat man auch den vollen Zugriff auf alle Joomla Variablen und was genauso wichtig ist auf die Anwendungsschnittstellen des Joomla Frameworks. Man kann z.B. die Datenbankschnittstellen von Joomla verwenden, Scripte einbinden lassen oder auf die verschiedenen Helper zugreifen. Dabei ist darauf zu achten, dass Joomla seit Version 3 die Joomla Namespaced API verwendet. Man muss daher im Code mit korrekten "Use" Starements die verwendeten Namespaces definieren, wenn man z.B. ein Script einbinden lassen möchte:

defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\Uri\Uri;
...
$document = Factory::getDocument (); $document->addScript(Uri::root(true) . "/my_media/script.min.js"); ...
Detaillierte Informationen über die Joomla Application Interfcae (API) sind z. B. über die Joomla Developer's Sites verfügbar.

Ajax-Anwendungen sind in der Lage, Anfragen an einen Server zu schicken, bei denen nur die Daten angefordert werden, die tatsächlich benötigt werden. Dies geschieht über den Aufruf eines Webservices (eines Serverprogramms). Dieser Aufruf erfolgt als asynchrone oder synchrone Kommunikation, d. h. während die Daten vom Server geladen werden, kann der User weiter mit der Oberfläche interagieren. Sind die Daten fertig geladen, dann wird eine zuvor benannte JavaScript-Funktion aufgerufen, die die Daten in die Webseite einbinden kann.

php-scripte von solchen Webanwendungen laufen zwar auf der Client Seite mit Hilfe von jphpx unter der Kontrolle und in der Umgebung von Joomla - die Server Seite kann jedoch nicht in gleicher Weise unter dem Dach von Joomla ausgführt werden.

Seit der Version 1.3.0 von jphpx ist diese Einschränkung aufgelöst, da das jphpx System Plugin Ajax-Requests mit Hilfe der Joomla Ajax Schnittstelle ausführen kann. Folgende Maßnahmen sind für diese Umsetzung nötig.

  1. Die Client und Server Programme (die jeweiligen php-Scripte) müssen als jphpx Code Entries definiert werden
  2. Ajax Requests basieren auf Request-URLs. Diese URLs sind für die Joomla Ajax Schnittstellen zu ändern:
    index.php?option=com_ajax&plugin=jphpx&group=system&format=raw&id=nn
    &id=nn ist die id des jphpx code entries des Server programms.
Folgendes Beispiel soll dies erläutern: Wenn die ursprüngliche ajax-URL lautete:
 php-apps/server.php?request=1&data=new 
dann wird die neue ajax-URL (für einen jphpx code entry id=10 des Server Programms)
index.php?option=com_ajax&plugin=jphpx&group=system&format=raw&id=10&request=1&data=new
Folgendes sollte weiterhin bei Server Scripten beachtet bzw. überprüft werden.
  • Includes (bzw. requires) sollten auf korrekte Ergebnisse überprüft bzw. Pfad und Filename angepasset werden.
  • Zugriffe auf externe Dateien sollte auf Fehlerfreiheit überprüft bzw. Pfad und Filename angepasset werden.
  • php-globals sind nicht unterstützt
  • bei Fehlern im Server Script wird ein "HTTP 500 Internal Server Error" produziert. Überprüfen Sie dann ihr Server Script bzw. analysieren sie auch die Apache Logs.

Ajax absichern

" Über diesen Plugin Parameter oder über den Einsatz des Ajax Request Parameters "&secure_parm=1" kann man die Sicherheit von Variablen, die mit "$_GET", "$_POST" oder "$_REQUEST" bereitgestellt werden, erhöhen.
Zusätzlich kann man mit dem Plugin Parameter "Default Typen Prüfung" festlegen, welche Prüfung für die Request Parameter durchgeführt werden soll, wenn keine Typenprüfung über den Request Parameter "check_type" angefordert wurde.

Mit dem Request Parameter "check_type" kann man auf korrekte Eingaben prüfen;

  • &check_type="STRING" - (Standard) Konvertiert die Eingabe in eine einfache Textzeichenfolge; entfernt alle Tags / Attribute.
  • &check_type="INT", &check_type="INTEGER" - gibt die erste Ganzzahl zurück, die im Parameterwert gefunden wird
  • &check_type="UINT" - gibt ein unsigned int zurück
  • &check_type="FLOAT", &check_type="DOUBLE" - gibt den ersten gefundenen Float zurück
  • &check_type="BOOL", &check_type="BOOLEAN" - Erwartet die Werte 0 oder 1 (Achtung: Angabe "true"' bzw '"false" sind Strings)
  • &check_type="WORD" - Erlaubt nur die Zeichen a-z und Unterstrich
  • &check_type="ALNUM" - alphanumerisch
  • &check_type="CMD" - Erlaubt a-z, 0-9, Unterstrich, Punkt, Bindestrich. Entfernen Sie auch führende Punkte aus dem Ergebnis.
  • &check_type="HTML" - wandelt die Eingabe in einen String um; entfernt alle HTML-Tags/Attribute.
  • &check_type=""PATH" - Konvertiert die Eingabe in einen String und validiert ihn als Pfad
  • &check_type="RAW" - Seien Sie vorsichtig damit, um Injektionsangriffe auf Ihre Website zu vermeiden!
  • &check_type="USERNAME" - entfernt alle ungültigen Zeichen des Benutzernamens.

Meine php-Anwendungen sind Beispiele für diese Umsetzung - sie laufen sowohl auf der Client Seite als auch auf der Serverseite völlig unter der Kontrolle und der Umgebung von Joomla.

Nicht ohne Grund erlaubt Joomla nicht, dass php-Code in Inhalten verwendet werden kann. Mit dieser Restriktion schützt sich Joomla vor fehlerhaftem oder bösartigem Programmen. Mit dem System Plugin jphpx, wird diese Einschränkung jedoch aufgehoben. Deshalb ist es sehr wichtig, dass die Kontrolle über eingestzte php-Scripte oder php-Anwendungen nicht verloren geht. jphpx bietet dazu zwei Möglichkeiten der Kontrolle von:
  1. Code aus dem Filesytem
  2. Code aus der jphpx Datenbank Tabelle

Code aus dem Filesystem

Mit dem Plugin Parameter "Pfad Präfix" wird der angegebene Pfad dem einzuschließenden Dateipfadnamen vorangestellt. Wenn z.B. der Pfadpräfix auf "php-apps/" gesetzt wurde, kann der php-Code nur aus diesem Verzeichnis oder Unterverzeichnissen geladen werden. Ein jphpx plugin Tag von:
{jphpx [test/my-script.php]}
wird die Datei "php-apps/test/my_script.php" verwenden und laden. Ein anderes Verzeichnis unterhalb von "php-apps" (z.B. "modules/") kann nicht verwendet werden. So kann man daher einfach steuern, dass Code eben nicht aus dem gesamten Filesystem von Joomla verwendet werden kann, sondern nur von den Verzeichnissen, über die man die Kontrolle ausübt.

Code aus der jphpx Datenbank Tabelle

Absolute Kontrolle über die verwendeten php-Scripts hat man, wenn der Code nur aus den jphpx Datenbank Tabellen geladen werden darf. Diese Option kann man über den Plugin Parameter "Nur DB-Zugriff" setzen. Ein Benutzer mit Administrator-Rechten kann dann Inhalte in die Datenbank laden, verwalten und zur Verfügung stellen. Die jphpx Komponente ermöglicht, dass php-Code (oder aber auch andere textbasierte Inhalte) in die jphpx Datenbank Tabelle geladen und verwaltet werden kann.
Benutzer, die Zugriff auf das Joomla Filesystem haben, können dann zwar Code im Filesystem verändern, haben jedoch nur Lese-Zugriff via jphpx Plugin Tag auf den gespeicherten Code aus der Datenbank. Falls ein Benutzer über den Plugin Tag von jphpx Code aus dem Filesystem anfordert, wird der Request mit einer Fehlermeldung abgewiesen.

Joomla Security

Joomla enthält viele Funktionen, die bei der Sicherung von Anwendungen und darauf aufbauenden Erweiterungen helfen. Diese Funktionen sollten Sie nach Möglichkeit immer nutzen, da sie von vielen Menschen der Entwickler-Community kontrolliert werden und eventuell erforderliche Updates automatisch verfügbar gemacht werden, wenn ein Joomla-Update ansteht.

Daten aus einer Abfrage abrufen

Alle Eingaben, die von einem Benutzer stammen, müssen als potenziell gefährlich angesehen und vor der Verwendung bereinigt werden. Dazu sollten Sie immer die Funktionen von Joomla nutzen und die JInput-Klasse zum Abrufen von Daten aus der Anforderung anstelle der Rohvariablen $_GET, $_POST oder $_REQUEST verwenden, und damit die JInput-Methoden für die Ünerprüfung und Filterung der Eingabe nutzen. JInput behandelt alle Aspekte der Benutzeranfrage unabhängig von der verwendeten Abfragemethode. Sie kann auch verwendet werden, um Cookie-Daten und sogar Server- und Umgebungsvariablen abzurufen. Es ist jedoch wichtig, die richtige JInput-Methode zu verwenden, um maximale Sicherheit zu gewährleisten. Dabei ist es sehr einfach, die Methode JInput->get mit Standardparametern zu verwenden.

Um weitere Informationen zu erhalten, lesen Sie bitte den Artikel über Richtlinien für sichere Codierung mit Joomla.

Die Motivation das System Plugin jphpx zu entwickeln war unter anderem das Problem, dass die Joomla Extension "jumi" nur die Software Version von 2011 zur Verfügung hatte. Die Weiterentwicklung von Joomla Version 3 und Version 4 wurden nicht in dem Produkt umgesetzt. Nach der Fertigstellung von jphpx habe ich deshalb meine php-Anwendungen von der Jumi-Schnittstelle auf die neuen Möglichkeiten umgestellt.

Migration jumi plugin

Diese Umstellung ist die Einfachste. Hier tauscht man in dem Jumi Plugin-Tag das Wert "jumi" mit dem Wert "jphpx" aus. Alles andere bleibt gleich.

Migration jumi Module

Das Jumi Module ist nicht mehr nutzbar. Wenn Sie stattdessen die neueste Version von jphpx verwenden, können Sie jetzt nun das jphpx Modul verwenden. Alternativ können Sie die Joomla Option "eigenes Modul" verwenden. Hiermit können Sie das jphpx-System-Plugin verwenden, um Ihre eigenen PHP-Skripte einzubinden. z.B. um ein Slider-Modul zu erstellen.

Migration jumi Komponente

Die Jumi Komponente kann man komplett mit der jphpx Komponente ersetzen. Folgende Schritte sind dazu nötig.
  1. Definieren Sie ihre php-Anwendung via "jphpx Anwendungen" (einen neuen jphpx Code Entry einrichten).
  2. Richten sie einen Zugriff auf diese Anwendung über "Menus" ein. Wählen Sie dabei für "Menüeintragstyp" den aus den angebotenen Typen "jphpx Anwendungen -> Application" und selektieren Sie dann die gewünschte jphpx Application.
  3. Nach dem Speichern ist die Anwendung dann sofort verfügbar.
Ich habe so meine Anwendungen (z. B: Wahlbeteiligung in Deutschland) in wenigen Minuten umstellen können.

Download jphpx Package

jphpx ist freie Software - Sie müssen jedoch die GPL Linzenz Bedingungen beachten, um diese Software einzusetzen. Zum Download von jphpx klicken Sie den Download button:

jphpx Version 1.3.3

 download jphpx System Package für Joomla