cgi script fehler

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

Donnerstag 25. November 2004, 12:09

Hallo zusammen, seit heute gucke ich mir ein bisschen
python im zusammenhang mit cgi an.
ich nutze win 2k und xampp, ne anfängerfreundliche apache
version :)
habe in meiner html datei folgendes simples eingabefeld:

Code: Alles auswählen

<form action="includes/script.py">
    <input type="text" name="zahl">
    <input type="submit" value="Abschicken">
</form>
das script sieht so aus:

Code: Alles auswählen

import cgi
import cgitb; cgitb.enable()

form = cgi.FieldStorage()
print form
egal aber welches script in nutze, immer kommt nur folgender fehler:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, admin@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
habe schon hier im forum gesucht, konnte aber nichts finden was hilft :/
*edit*
vergessen die fehlermeldung zu posten
[Thu Nov 25 12:25:12 2004] [error] [client 127.0.0.1] (OS 3)Das System kann den angegebenen Pfad nicht finden. : couldn't create child process: 720003: script.py, referer: http://localhost/cgi-test/
[Thu Nov 25 12:25:12 2004] [error] [client 127.0.0.1] (OS 3)Das System kann den angegebenen Pfad nicht finden. : couldn't spawn child process: C:/misc/cgi-test/includes/script.py, referer: http://localhost/cgi-test/
ok fehler sagt zwar alles, aber verlinkt ist alles korrekt oO
*edit* ;)
bin etwas weiter

Code: Alles auswählen

#!Python
import cgi
import cgitb; cgitb.enable()

form = cgi.FieldStorage()
print "Content-Type: text/html"
print "\n\n"
print "<html>"
print "<h1>"form"</h1>"
print "</html>"
wie kann ich form ausgeben? mache ich das so, erscheint jene fehlermeldung vom anfang, gebe ich einfach irgendwas aus a la
print "<h1>form</h1>" also ohne die " " gehts
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

Donnerstag 25. November 2004, 14:51

ok nach langem kampf geht es nun ^^

Code: Alles auswählen

#!Python
import cgi, string, math, sys
import cgitb; cgitb.enable(display=0, logdir="/tmp")

form = cgi.FieldStorage()
a = string.split(str(form), ",")
b = string.split(str(a[3]), "'")
print "Content-Type: text/html"
print "\n\n"
print "<html>"
print b[1]+" ist deine Zahl"
print "</html>"
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Donnerstag 25. November 2004, 18:42

Autsch... sorry, aber mir ist gerade mein Glas aus der Hand gefallen :wink: . Ich erlaube mir mal, dich zu verbessern. Um übergebene Variablen zu bekommen benutzt man cgi.FieldStorage, das ist schon richtig. Aber die Daten ließt man net aus dem String aus, das geht dictionary-like oder per getvalue/getfirst/getlist... siehe dazu hier. Du kannst bei cgitb.enable auch die Pramameter weglassen. Dann bekommst du die Anzeige bei Fehlern gleich in den Browser. dann würdest du sehen, dass wenn nix übergeben wird auch nix ausgelesen werden kann (deswegen vermutlich der Fehler). Mal ein Versuch:

Code: Alles auswählen

#!Python
import cgitb; cgitb.enable()
import cgi

form = cgi.FieldStorage()
b=form.getfirst("zahl","0")
print "Content-Type: text/html"
print "\n\n"
print "<html>"
print b,"ist deine Zahl"
if not form.has_key("zahl"):
    print "<br>oder auch nicht... diese 0 war Standart."
print "</html>"
mfG Milan
Antworten