Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
html checkboxen mit shell auswerten

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Rumpff
Gast





BeitragVerfasst am: 06. März 2009 14:19   Titel: html checkboxen mit shell auswerten

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
 

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 06. März 2009 20:12   Titel:

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: 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/LinuxTutorialCgiShellScript.html
http://www.mail-archive.com/mathopd%40mathopd.org/msg00234.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.
 
Benutzer-Profile anzeigen Private Nachricht senden

Rumpff
Gast





BeitragVerfasst am: 09. März 2009 18:01   Titel:

Ich glaube, es geht vie einfacher:
Code:

#!/bin/sh

echo "Content-type: text/plain"
echo ""

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

INPUT=`echo "${HTMLPOST}" | sed 's/\&//g' | sed 's/LINK\=/\:/g' | sed 's/+/\ /g'`

echo "Die Argumentliste: $HTMLPOST"
echo "Das Ergebnis lautet: $INPUT"

exit 0


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

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 09. März 2009 22:37   Titel:

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.
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy