Seite 1 von 1
Varaiblen aus einem Formular
Verfasst: Donnerstag 3. Juli 2003, 09:32
von LuScHe
Hi ho
Wie kriege ich mit cgi die variablen aus einem Formular
hier ist das Formular
Code: Alles auswählen
<form method="POST" action="http://dominik/cgi-bin/log.py" name="Login">
<p align="center">Login: <input type="text" name="bn" size="20"><br>
Passwort: <input type="password" name="pw" size="20"><br>
<input type="submit" value="Login" name="B1"></p>
</form>
und wie kriege ich nun die variablen aus dem Formular?
schonmal danke.
Verfasst: Donnerstag 3. Juli 2003, 11:14
von lbuega
Hallo,
weis nicht genau ob die Antwort auch für CGI's passt, aber normalerweise stehen bei der POST-Methode sämtliche Variablen über ihren Namen im HTTP_POST_VARS-Array zur Verfügung (in Deinem Fall z.B. $HTTP_POST_VARS[ "bn" ]; d.h. mit einem "print $HTTP_P... ;" würde es Dir deren Inhalt ausgeben)
bestehst du auf method=post?
Verfasst: Freitag 4. Juli 2003, 00:17
von Gast
hi vielleicht gehts auch mit post, eine lösung unter python schaut so aus:
Code: Alles auswählen
#!/wo/auch/immer/python/liegt --- bei mir /usr/bin/python
import cgi
form=cgi.FieldStorage()
bn=form["bn"].value
pw=form["pw"].value
#HTML Dokument:
print "Content-type: text/html"
print
print "<html>"
print "<body"
print "<b>Ihr Name, Ihr Passwort</b><br>"
print "Nachname:" , bn, "<br>"
print "Passwort: ", pw, "<br>
print "</body>"
print "</html>"
Code aus Einstieg in Python S. 221 von Galileo Computing
Ich habe ihn nicht probiert, wird aber wohl klappen so.
Mfg
roland
Verfasst: Freitag 4. Juli 2003, 12:35
von LuScHe
Irgentwie funzt das net
und nochwas cgi.test() sagt:
Form Contents:
B1: <type 'instance'>
MiniFieldStorage('B1', 'Login')
bn: <type 'instance'>
MiniFieldStorage('bn', 'login')
pw: <type 'instance'>
MiniFieldStorage('pw', 'passwort')
vielleicht hilft das weiter.
trotzdem danke
probier mal
Verfasst: Samstag 5. Juli 2003, 21:37
von Gast
mach mal bei password ein normales eingabefeld, also type="text"
vielleicht ist die idee absurd, aber ich dachte dass pyhton vielleicht zum auslesen eines eingabefeldes anders zugreifen muss.
ist reine philosophie, jetzt.
und check auch mal deine apache einstellungen, bzw. guck mal im log nach was der über den vorgang ausgibt.
mfg
Verfasst: Sonntag 6. Juli 2003, 12:39
von Milan
Tja, wenn nix abgesendet wird kann man auch nix im Formular finden. Falls zum Beispiel kein Passwort in pw eingegeben wird, gibt es kein form["pw"]. Es ist Python allerdings (zum Glück

) egal, was für ein Eingabefeld man benutzt, alles Daten lassen sich auf dieselbe Art und Weise auslesen (stimmt schon so, wie das da steht).
Vielleicht zwei Tipps:
- Um nicht einen Fehler beim auslesen zu erzeugen, wenn nix abgesendet wurde kann man form.getvalue(key, standartwert) benutzten.
- Um eine exakte Fehlerbeschreibung zu erhalten, kannst du den cgitracebackmodus verwenden. Schreib einfach diese zwei Zeilen oben an dein Script dran, am besten direkt unter das import cgi:
@milan
Verfasst: Sonntag 6. Juli 2003, 16:43
von Gast
aha, gibt es also sprachen denen das tatsächlich nicht egal ist, welcher typ von eingabefeld benutzt wurde???
bist

ein netter kumpel und führst du das mal genau aus, wie du das mit form.getvalue(key, standartwert) gemeint hast???
mfg
roland
Verfasst: Sonntag 6. Juli 2003, 17:59
von Milan
Ich habe keine Ahnung we das bei anderen Sprachen gemacht wird, es wäre aber eigentlich sinnlos, besonders nach den Typen zu unterscheiden. Sinn macht das erst beim Dateiupload... (kannst dir ja mal die Topics hier dazu anschauen)
also, getvalue funktioniert so: Du hast ja nun nach dem Ruf von form=cgi.FieldStorage() alle Formulardaten in form. Nun kannst du, falls ein Passwort vom Browser gesendet worden ist, dieses mit form["pw"].value erhalten. Andernfalls gibt es einen Fehler (KeyError), da Python nicht weiß was es nun machen soll. Du könntest diesen Fehler in einem try-except-Block abfangen, oder halt getvalue nutzen.
Du rufst dann z.B. form.getvalue("pw",""). Falls pw übergeben wurde ist alles wie oben, falls nicht liefert getvalue einfach statt einem Fehler den übergebenen Standartwert; hier einen leeren String.
alles klar
Verfasst: Sonntag 6. Juli 2003, 20:05
von Gast
danke für die ausführung.
mfg
roland