Pro-Linux.de

Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 18. Nov 2018 23:56

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: html checkboxen mit shell auswerten
BeitragVerfasst: 06. Mär 2009 14:19 
Hallo,

ich habe eine einfache HTML Form, die ich gerne mit sh (oder auch bash) auswerten würde. Im Prinzip hätte ich einfach gerne eine Liste der Fabrikate, die ausgewählt wurden, in einer extra Datei und natürlich vorher die Auswertung, ob "Abbrechen" (=www.google.de) oder "Senden" (=auswerten.sh) betätigt werden.
Code:
<form action="auswerten.sh" method="post">
<input type="checkbox" name="Fabrikat"  value="Audi ">Audi<br>
<input type="checkbox" name="Fabrikat" value="BMW">BMW<br>
<input type="checkbox" name="Fabrikat" value="Toyotoa">Toyota<br>
<input type="input type="submit" value="Senden"><input type="reset" value="Abbrechen">
</form>
Leider ist alles recht Java/php lastig zu diesem Thema. Ich bin mir sicher, das geht auch mit sh. Falls jemand also eine Lösung oder einen Link hat, wäre ich sehr dankbar


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 06. Mär 2009 20:12 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
Per CGI bekommst du die Daten hinter der Basis-URL in der Variable QUERY_STRING übermittelt, wenn du die Methode "get" nimmst. Bei "post" bekommst du die Daten per Standardeingabe. Das Ergebnis gibst du auf die Standardausgabe aus.

Mach mal ein supersimples CGI in bash:
Code:
#!/bin/bash
printf "Content-Type&#58; text/html\n\n"
printf "<html><head></head><body>"
printf "<h1>env</h1><p><code>"
env
printf "</code></p><hr>"
printf "<h1>stdin</h1><p><code>"
/bin/cat
printf "</code></p>"
printf "</body></html>"
Das Skript oben schreibt dir nur die Variableninhalte und den Inhalt der Standardeingabe in einen HTML-Rahmen und gibt den dann mit passendem HTTP-Header zurück.
Von dieser Basis aus kannst du dann mit Shell-Mitteln und externen Hilfsprogrammen (awk,sed etc.) erweitern.

Weitere Vorschläge hab' ich durch Googlen mit "CGI shell" gefunden. Z.B.
http://www.yolinux.com/TUTORIALS/LinuxT ... cript.html
http://www.mail-archive.com/mathopd%40m ... 00234.html

Dein konkretes Problem erfordert es, den QUERY_STRING in die einzelnen Zuweisungen auseinanderzuschnippeln, was in der Shell selbst nicht ganz trivial ist. IFS auf & zu setzen, dann auf = sollte helfen, aber evtl. ist es besser, gleich den ganzen String in awk reinzuwerfen. Weiteres Problem: Sonderzeichenbehandlung. Beispielsweise wird das Leerzeichen vom Browser entweder als + oder als %20 kodiert, und das + als %2B oder %2b usw. usw.

Oder man nimmt gleich eine Skriptsprache, die für Stringmanipulation gedacht ist, also Tcl oder Perl. Da gibt es dann auch gleich passende Bibliotheken, die einem die Arbeit abnehmen die ganzen Spezialitäten selbst zu entwickeln. Vor allem sind die Bibliotheken sicher besser getestet als das, was man selbst macht.

Janka

_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09. Mär 2009 18:01 
Ich glaube, es geht vie einfacher:
Code:
#!/bin/sh

echo "Content-type&#58; text/plain"
echo ""

read HTMLPOST  #<- den brauchte ich wohl, da steht alles drin

INPUT=`echo "$&#123;HTMLPOST&#125;" | sed 's/\&//g' | sed 's/LINK\=/\&#58;/g' | sed 's/+/\ /g'`

echo "Die Argumentliste&#58; $HTMLPOST"
echo "Das Ergebnis lautet&#58; $INPUT"

exit 0
Allerdings erstmal nur an einem simplen Beispiel getestet, sah aber schon recht vielversprechend aus.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09. Mär 2009 22:37 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
read HTMLPOST liest einfach die Standardeingabe in die Variable HTMLPOST ein.

Dieses Skript macht im Prinzip genau das, was ich geschrieben habe, also den String an den & in einzelne Parameter aufspalten und dann nach einem bestimmten Parameter suchen, dann das + durch Leerzeichen ersetzen und das Ergebnis dann nach INPUT umspeichern. Nur halt mit sed statt awk oder IFS.

Was das Skript nicht macht, ist eine allgemeine Sonderzeichenbehandlung. Und genau da wird es bei diesem Ansatz kompliziert.

Aber spiele ruhig mal damit. Zum Lernen taugt es allemal.

Janka

_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de