Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
de:netzer:actioncgi [2013/03/15 16:45] – angelegt cfritzsch | de:netzer:actioncgi [2025/06/11 20:42] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== CGI ====== | ||
+ | |||
+ | Für schnellen Zugriff auf die [[commandinterface|Kommandoschnittstelle]] mit einem Browser stellt der Netzer eine CGI-Version zur Verfügung. | ||
+ | |||
+ | ===== Verwendung ===== | ||
+ | |||
+ | Die CGI-Version wird genutzt, indem man die Seite '' | ||
+ | Schlüssel-Wert-Paar im [[wpde> | ||
+ | Für den Netzer mit der Kennung '' | ||
+ | < | ||
+ | Im einfachsten Fall wird diese URL direkt in die Adressleiste des Browsers eingeben. | ||
+ | |||
+ | Die HTTP-Response hat den Content-Type '' | ||
+ | |||
+ | Pro Aufruf kann nur ein Kommandoschnittstellenbefehl ausgeführt werden. Werden mehrere Kommandoschnittstellenbefehle angegeben, wird nur der erste Befehl ausgeführt, | ||
+ | alle anderen werden ignoriert. | ||
+ | Zusätzlich zu dem Kommandoschnittstellenbefehl kann noch ein CGI-spezifischer Befehl angegeben werden, der ebenfalls ausgeführt wird. Auch hier gilt, | ||
+ | dass pro Aufruf nur ein CGI-spezifischer Befehl ausgeführt wird. Werden mehrere CGI-spezifische Befehle angegeben, wird nur der erste ausgeführt. | ||
+ | |||
+ | <note important> | ||
+ | da diese nur aus einem Schlüssel (dem Befehl) ohne Wert bestehen. Dies geschieht immer dann, wenn mehrere Befehle in einem CGI-Aufruf übergeben werden. | ||
+ | |||
+ | Es wird grundsätzlich nur der erste gefundene Befehl ausgeführt, | ||
+ | <WRAP center round box 60%> | ||
+ | Die beiden getrennten Befehle '' | ||
+ | < | ||
+ | werden vom Netzer wie ein Befehl '' | ||
+ | < | ||
+ | </ | ||
+ | Problematisch ist dieser Umstand bei der Kombination von Kommandoschnittstelle und CGI-spezifischen Befehlen. In diesen Fällen können zwei Befehle aus dem Query String ausgeführt werden, jeweils ein Befehl der Kommandoschnittstelle und ein CGI-spezifischer. | ||
+ | <WRAP center round box 60%> | ||
+ | Der Lesebefehl '' | ||
+ | < | ||
+ | werden als Schreibbefehl '' | ||
+ | < | ||
+ | '' | ||
+ | </ | ||
+ | |||
+ | Das kann zu Fehlerbildern führen, die auf den ersten Blick sehr verwirrend sind. | ||
+ | <WRAP center round box 60%> | ||
+ | Der Aufruf | ||
+ | < | ||
+ | wird interpretiert wie | ||
+ | < | ||
+ | </ | ||
+ | Also wie der Schreibbefehl '' | ||
+ | |||
+ | **Daher gilt:** | ||
+ | Wenn mehrere Befehle in einem Aufruf übergeben werden sollen, darf nur der letzte die Form eines Lesebefehls haben (nur ein Befehl, kein Wert). | ||
+ | Alle anderen Befehle müssen die Form von Schreibbefehlen haben (ein Befehl und ein Wert). | ||
+ | |||
+ | Korrekt: | ||
+ | < | ||
+ | |||
+ | Falsch: | ||
+ | < | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Spezifische Befehle ===== | ||
+ | |||
+ | ==== Redirect ==== | ||
+ | |||
+ | Der Befehl '' | ||
+ | |||
+ | Verwendet wird es vor allem in Kombination mit Schreibbefehlen der Kommandoschnittstelle. | ||
+ | Durch diese Kombination kann man einen Schreibbefehl ausführen, ohne dass die Antwort des Netzers angezeigt wird. | ||
+ | |||
+ | === Beispiel === | ||
+ | |||
+ | < | ||
+ | |||
+ | Dieser Aufruf würde den GPIO-Kanal '' | ||