Datenfluss zwischen dem CGI-Script und dem Wordpress-Post, auf dem es eingebunden wurde

Datenübermittlung zwischen externen CGI-Scripten und WordPress

In diesem Beitrag wird gezeigt, wie der zuvor erstellte Shortcode und das CGI-Script erweitert werden müssen, damit zuvor gesendete Formulardaten auch wieder verarbeitet werden können. Dazu müssen diese vom CGI-Script an die WordPress-Seite, und von der WordPress-Seite zum CGI-Script gesendet werden.

Denn standardmäßig sendet das CGI-Script die Daten an sich selbst und benutzt dafür einen relativen Pfad:

Wenn der vom CGI-Script zurückgelieferter HTML-Code so in die WordPress-Seite eingebunden wurde und nun im Formular als Submit-Ziel so wie hier ein relativer Pfad angegeben ist, führt das ins Leere und beim Klick auf OK wird ein Fehler auftreten.

Denn in der WordPress-Permalink-Struktur liegt das CGI-Script „beispiel“ ja nicht. Alternativ kann man als submit-Ziel auch die absolute URI des CGI-Scriptes angeben, aber dann landen wir nach dem Klick auf sozusagen „außerhalb“ des WordPress-Blogs.

Will man in der WordPress-Umgebung bleiben, müssen sowohl das CGI-Script, als auch der Shortcode angepasst werden.

Das CGI-Script muss in der Lage sein, die Daten statt an sich selbst auch an ein anderes Ziel zu senden, nämlich an die aktuelle WordPress-Seite. Das realisieren wir, indem es per GET oder POST ein Argument namens ’submit‘ entgegen nimmt. Wenn vorhanden, wird dessen Wert als submit-Ziel für das Formular verwendet. Ansonsten bleibt als Standardeinstellung das submit-Ziel „beispiel“, damit das Script auch seperat funktioniert.

Der Shortcode muss dahingehend erweitert werden, dass die WordPress-Seite GET- und POST-Argumente entgegennehmen kann und deren Werte über den Shortcode weiterreicht an das CGI.

Datenfluss zwischen dem CGI-Script und dem WordPress-Post, auf dem es eingebunden wurde
Datenfluss zwischen dem CGI-Script und dem WordPress-Post, auf dem es eingebunden wurde.
Quelle des Firefox-Logos: Firefox Logo von Keng Susumpow bei Flickr, Lizenz: Creative Commons Namensnennung 2.0 US-amerikanisch (nicht portiert).

 

Dazu wird der Shortcode so angepasst, dass er aus einem neu eingeführten Attribut arglist eine durch Leerzeichen getrennte Liste von Argumentnamen ausliest. Für jeden dieser Argumentnamen wird das entsprechende Argument aus den bekannten GET- und POST-Daten ausgelesen, dazu benutzen wir den PHP-eigenen $_REQUEST-Array. Sofern das Argument dort existiert und einen Wert hat, wird er übernommen. Damit wird ein Querystring zusammengebaut, der in dem Shortcode dann letztlich wieder an das CGI-Script übergeben wird. Der fertige Quelltext sieht dann so aus:

Das CGI-Script muss, wie schon gesagt, seine SUBMIT-URL so anpassen können, dass es die Formulardaten an die URL des WordPress-Artikels schickt. Dies geschieht über ein zusätzliches Argument namens submit , welches ihm vom Shortcode zugeliefert wird. Damit füllt das CGI dann eine interne, lokale Variable (mit Default auf sich selbst, so dass es auch unabhängig von WordPress funktioniert).

Der Quellcode für das vollständige CGI-Script beispiel sieht wie folgt aus:

Damit sind wir am Ziel. Das fertige, funktionierende Beispiel mit eingebundem externen CGI-Script findet ihr im letzten Teil dieser Reihe.


Alle Beiträge dieser Serie:

Veröffentlicht von

Steffi

Hi! Ich bin beruflich v.a. im Linux-Umfeld tätig. In meiner Freizeit nähe und koche ich gern - außerdem studiere ich nebenher Mathematik und mache viel Sport. Über all diese Dinge, und was mich sonst noch beschäftigt, schreibe ich hier in meinem Blog.