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)
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:
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.