jphpx ermöglicht die Einbindung von benutzerdefinierten Codes in Joomla 3.9.x und Joomla 4.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 Packets

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. 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.
  • Ajax absichern - hiermit kann man Ajax Variablen die mit "$_GET", "$_POST" oder "$_REQUEST" geliefert werden, absichern, um böswilligen oder fehlerhaften Code auszuschliessen.

3. Bereitstellung der jphpx Komponente

Mit der Version 1.3.0 stellt das jphpx System 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.
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 entwickelt werden muss.

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]}
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.

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.

Mit 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.

Hinweis: Über den Plugin Parameter "Ajax absichern" 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:
  • html-tags werden entfernt
  • Alle Sonderzeichen werden aus den Werten entfernt (Werte im json-Format sind erlaubt und werden nicht verändert).

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. Statt dessen bietet Joomla die Option "eigenes Modul" an. Hier kann man dann das jphpx System Plugin nutzen, um eigene PHP-Scripte einzubinden. z.B. um ein Slider Module 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.2

 download jphpx System Package für Joomla

 

Besucher

Heute: 13
Gestern: 49
Diese Woche: 159
Letzte Woche: 278
Dieser Monat: 62
Letzter Monat: 1.815
0186333
United States 27,7% USA
Germany 23,3% Deutschland
Russia 4,2% Russland
France 3,2% Frankreich
Italy 2,7% Italien
Indonesia 2,4% Indonesien
Poland 2,0% Polen

Total:

205

Länder

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbesssern. Auf keinen Fall werden persönliche oder vertrauliche Daten gespeichert oder weitergegeben.