468,719 Members | 1,854 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,719 developers. It's quick & easy.

cgi form validation problems

Hi.

I am writing up my own web form. I'm a bit of a newb, and read up many
different how-tos and examples and documentaion. I finally had it
working just great until I decided that I wanted to add some extra
logic because there's one form that submits a particular type of
information. a little extra validation, and the creation of a list of
the values to be mailed in to the site manager.

The code below is where I am going wrong (edited for brevity):
form=cgi.FieldStorage()

rev_fields = { "param1":None, "param3":None, "param6":None,
"param5":None, "param8":None, "param9":None, "param10":None,
"param11":None }
# Everything worked until I added the following if statement:

if form.has_key("param8"): # Only one form has this
param8 = form.getvalue("param8")
if param8 == 0: # 0 is the default value
print "Content-type: text/html"
debug("You must give the item a rating")
for field in form.keys():
value = form[field].value
if rev_fields.has_key(field):
rev_fields[field] = value
for key in rev_fields:
if rev_fields[key] == None:
print "Content-type: text/html"
debug("All fields must be filled in. Please check your %s
submission." % key)
else:
#feedback = ("%s, %s, %s, %s, %s, %s, %s, %s" %
(form["param1"].value, form["param3"].value, form["param6"].
value, form["param5"].value, form["param8"].value,
form["param9"].value, form["param10"].value, form["param11"].value)
#feedback = ("%s, %s, %s, %s, %s, %s, %s, %s" %
(form.getvalue("param1"), form.getvalue("param3"), form.getvalue(
"param6"), form.getvalue("param5"), form.getvalue("param8"),
form.getvalue("param9"), form.getvalue("param10"),
form.getvalue("param11"))
feedback = ("%s, %s, %s, %s, %s, %s" %
(rev_fields["param1"], rev_fields["param3"], rev_fields["param6"],
rev_fields["param5"], rev_fields["param8"], rev_fields["param9"],
rev_fields["param10"], rev_fields["param11"])
#feedback = form[ "score" ].value

msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n Feedback: %s\r\n\r\n"
%
(rev_fields["param2"], rev_fields["param7"], rev_fields["param3"],
rev_fields["param6"]))
If I comment out the 'else:' logic, it works great. But then I don't
get a list called feedback containing all teh bits I want, The error I
get is really strange, too:

[Mon Aug 15 05:54:58 2005] [error] [client 60.224.106.116] Premature
end of script headers: /var/www/users/senta/html/gobooks/cgi/form.py
File "/var/www/users/senta/html/gobooks/cgi/form.py", line 99
msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n Feedback:
%s\r\n\r\n" %
^
SyntaxError: invalid syntax

Just a simple assignation.... I did think it might have been an
indentation error, but I changed that around and got a message telling
me about an indentation problem, which this doesn't do.

I have tried several different ways to assign the values, as you can
see by the commented out lines. Tried getting the values directly from
teh form, and also from the validated rev_fields dictionary. I'd be
extremely grateful to anyone who helps me through this.

TIA

Googleboy

Aug 14 '05 #1
1 2286
googleboy wrote:
Hi.

I am writing up my own web form. I'm a bit of a newb, and read up many
different how-tos and examples and documentaion. I finally had it
working just great until I decided that I wanted to add some extra
logic because there's one form that submits a particular type of
information. a little extra validation, and the creation of a list of
the values to be mailed in to the site manager.

The code below is where I am going wrong (edited for brevity):
form=cgi.FieldStorage()

rev_fields = { "param1":None, "param3":None, "param6":None,
"param5":None, "param8":None, "param9":None, "param10":None,
"param11":None }
# Everything worked until I added the following if statement:

if form.has_key("param8"): # Only one form has this
param8 = form.getvalue("param8")
if param8 == 0: # 0 is the default value
print "Content-type: text/html"
debug("You must give the item a rating")
for field in form.keys():
value = form[field].value
if rev_fields.has_key(field):
rev_fields[field] = value
for key in rev_fields:
if rev_fields[key] == None:
print "Content-type: text/html"
debug("All fields must be filled in. Please check your %s
submission." % key)
else:
#feedback = ("%s, %s, %s, %s, %s, %s, %s, %s" %
(form["param1"].value, form["param3"].value, form["param6"].
value, form["param5"].value, form["param8"].value,
form["param9"].value, form["param10"].value, form["param11"].value)
#feedback = ("%s, %s, %s, %s, %s, %s, %s, %s" %
(form.getvalue("param1"), form.getvalue("param3"), form.getvalue(
"param6"), form.getvalue("param5"), form.getvalue("param8"),
form.getvalue("param9"), form.getvalue("param10"),
form.getvalue("param11"))
feedback = ("%s, %s, %s, %s, %s, %s" %
(rev_fields["param1"], rev_fields["param3"], rev_fields["param6"],
rev_fields["param5"], rev_fields["param8"], rev_fields["param9"],
rev_fields["param10"], rev_fields["param11"])
I believe you missed a closing parenthesis, which is why you are getting
the syntax error - the scanner has to look at the next source line
because it expects it to continue the unclosed expression. That's why
you are getting confused.

#feedback = form[ "score" ].value

msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n Feedback: %s\r\n\r\n"
%
(rev_fields["param2"], rev_fields["param7"], rev_fields["param3"],
rev_fields["param6"]))
Since rev_fields is a dictionary, it would be easier to write this as

msg = "From %(param2)s\r\nTo: %(param7)\r\nSubject: %(param3)s\r\n\r\n
Feedback: %(param6)s\r\n\r\n" % rev_fields

module any text wrapping the mailstream might have done to the above
single line.

If I comment out the 'else:' logic, it works great. But then I don't
get a list called feedback containing all teh bits I want, The error I
get is really strange, too:

[Mon Aug 15 05:54:58 2005] [error] [client 60.224.106.116] Premature
end of script headers: /var/www/users/senta/html/gobooks/cgi/form.py
File "/var/www/users/senta/html/gobooks/cgi/form.py", line 99
msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n Feedback:
%s\r\n\r\n" %
^
SyntaxError: invalid syntax

Just a simple assignation.... I did think it might have been an
indentation error, but I changed that around and got a message telling
me about an indentation problem, which this doesn't do.

I have tried several different ways to assign the values, as you can
see by the commented out lines. Tried getting the values directly from
teh form, and also from the validated rev_fields dictionary. I'd be
extremely grateful to anyone who helps me through this.

TIA

Googleboy


Hope this helps.

regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC http://www.holdenweb.com/

Aug 15 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

21 posts views Thread by Stefan Richter | last post: by
1 post views Thread by Suzanne Murray | last post: by
10 posts views Thread by Steve Benson | last post: by
5 posts views Thread by billa | last post: by
16 posts views Thread by Hosh | last post: by
27 posts views Thread by Chris | last post: by
12 posts views Thread by Gustaf | last post: by
6 posts views Thread by smk17 | last post: by
1 post views Thread by CARIGAR | last post: by
1 post views Thread by Oskars | last post: by
9 posts views Thread by bryonone | last post: by
reply views Thread by zhoujie | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.