Drupal: Insert PHP

Der PHP-Filter von Drupal ermöglicht die Verwendung von rohem PHP-Code in Textfeldern. Dies ist zwar ein extrem mächtiges Feature, führt aber schnell zu ernsthaften Sicherheitsproblemen. Benutzer mit der Berechtigung, PHP-Code in Eure Webseite einzufügen, können mit der Webseite praktisch alles machen, was sie wollen. Zudem wird der PHP-Code in der Datenbank gespeichert und lebt außerhalb Eures normalen Workflows. Mein Insert PHP-Modul versucht, diese Einschränkungen des PHP-Filters zu beheben und bietet eine sicherere Möglichkeit, PHP-Code redaktionell in Eure Drupal-Webseite einzubinden.

Der PHP-Filter ermöglicht es Benutzers PHP in Textfeldern zu verwenden.
Der PHP-Filter ermöglicht es Benutzers PHP in Textfeldern zu verwenden.

Das Insert PHP-Modul ermöglicht das Einfügen von PHP-Dateien in Textfelder mit Hilfe von Tokens. Das Modul verwendet die Drupal-Funktion drupal_get_path, um den Speicherort Eurer Skriptdatei zu ermitteln. Daher können Eure PHP-Dateien nur über Module oder Themes hinzugefügt werden. Zunächst müsst Ihr das Insert PHP-Modul allerdings aktivieren.

Findet und aktiviert das 'Insert PHP' Modul.
Findet und aktiviert das 'Insert PHP' Modul.

Nachdem Ihr das Modul aktiviert habt, müsst Ihr den Insert PHP-Filter in eines Eurer Textformate einfügen. In diesem Beispiel werde ich einen neuen Filter erstellen, den nur Admins verwenden dürfen. Das Einfügen von PHP-Dateien in Eure Inhalte bringt immer noch potenzielle Sicherheitsprobleme mit sich. Also seid vorsichtig, wem Ihr dieses Recht gebt.

Erstellt ein Textformat und für den 'Insert PHP'-Filter hinzu.
Erstellt ein Textformat und für den 'Insert PHP'-Filter hinzu.

Der neue Filter kann dann von Benutzern z.B. innerhalb von Node-Formularen verwendet werden. Um eine PHP-Datei einzufügen, verwendet Ihr [theme:THEME_NAME:FILE_PATH] oder [module:MODULE_NAME:FILE_PATH]. Die Datei muss die Endung ".inc" haben, um korrekt erkannt zu werden. Wenn der Filter die PHP-Datei nicht findet, wird das Token nicht ersetzt.

Erstellt eine neue Node und fügt ein Token für die Beispieldatei hinzu.
Erstellt eine neue Node und fügt ein Token für die Beispieldatei hinzu.

In diesem Beispiel füge ich die mit diesem Modul ausgelieferte Beispieldatei in eine neue Artikel-Node ein. Ihr könnt die allgemeine Funktion des Moduls testen, indem Ihr den im Beispiel verwendeten Token kopiert. Das Ergebnis sollte ein Text mit der Nachricht "It works" sein.

It works.
It works.

Mit diesem Modul seid Ihr nun in der Lage, Eure eigenen PHP-Dateien z.B. mit Git zu verwalten und trotzdem als regulären Node-Inhalt einzufügen. Zudem fügt dieses Modul weit weniger kritische Sicherheitsprobleme hinzu, als der native PHP-Filter.

Update

Ihr findet das Modul derzeit in einem Github Repository.


Kommentare


Wichtig: Durch den Click auf die obige Checkbox stimmst Du ausdrücklich der Übertragung von Daten an Facebook zu. Die Zustimmung erfolgt einmalig für die Kommentare dieses Artikels und wird nicht gespeichert. Weitere Details kannst Du dem Punkt Social Plugins der Datenschutzerklärung entnehmen.