[Tutor] CGI Programming

Tim Johnson tim@johnsons-web.com
Thu Jul 31 22:09:01 2003


* Elizabeth Bernert <ebernert@crpud.net> [030731 16:48]:
> I am programming in Pythono 2.2 through Apache.  I have searched though 
> google and have been unable to come up with anything.  I can "hold" onto 
> the inputs from the user for one submit, but no farther.  Is there a way 
> to hold onto the words for another submit.  I am writing Mad Libs (C) 
> for a class project and am at a loss.  I have attached my project and 
> placed comments at the problem.  Thank-you in advance for all advice.
> Sincerely,
 Hello Elizabeth:
    One simple way to "persist" data would be to encode
    it in a query string that would carry data from
    page 1 posted to page 2 and then use the "get" method
    to transmit to page 3 (as an example)
    Another way, expanding on this example is that the data
    posted from page 1 (or passed via a query string as
    in http://www.somdomain.com/cgi-bin/cgi.py?var1=one&var2=two,
    for that matter) would be stored within a form on page 2
    in fields of input/type "hidden". It would then be posted
    forward to page 3.

    The process I'm describing is language independent -
    there's also FastCgi, but learn CGI first :-)
    pythonesque example below....

> Elizabeth Bernert

> #!c:/Python22/python.exe
> # http://localhost:8080/cgi-bin/LIB_College.py
> # Program Files\Apache Group\Apache2\cgi-bin\LIB_College.py
> # Final Project - python CGI script
> 
> import cgi
> import cgitb; cgitb.enable()
> 
> print "Content-type: text/html\n\n"
> 
> form = cgi.FieldStorage()
> 
> ADJECTIVE1 = str(form.getvalue('ADJECTIVE1'))
> PLURAL_NOUN1 = str(form.getvalue('PLURAL_NOUN1'))
> PLURAL_NOUN2 = str(form.getvalue('PLURAL_NOUN2'))
> PLURAL_NOUN3 = str(form.getvalue('PLURAL_NOUN3'))
> ADJECTIVE2 = str(form.getvalue('ADJECTIVE2'))
> ADJECTIVE3 = str(form.getvalue('ADJECTIVE3'))
> PLURAL_NOUN4 = str(form.getvalue('PLURAL_NOUN4'))
> NUMBER1 = str(form.getvalue('NUMBER1'))
> NOUN1 = str(form.getvalue('NOUN1'))
> PLURAL_NOUN5 = str(form.getvalue('PLURAL_NOUN5'))
> AN_OCCUPATION1 = str(form.getvalue('AN_OCCUPATION1'))
> AN_OCCUPATION2 = str(form.getvalue('AN_OCCUPATION2'))
> PLURAL_NOUN6 = str(form.getvalue('PLURAL_NOUN6'))
> ADJECTIVE4 = str(form.getvalue('ADJECTIVE4'))

    So you could store something preposted
    as in
    '<INPUT TYPE=hidden NAME=PLURAL_NOUN4 VALUE="%s">' %(str(form.getvalue('PLURAL_NOUN4')))
    # untested code!!
    HTH
    tim
> 
> print '<html>'
> 
> print "Our American Universities offer students many" + " " + ADJECTIVE1
> print "courses that will prepare them to become good" + " " + PLURAL_NOUN1 + ".  You can get a degree as a Bachelor of" + " " + PLURAL_NOUN2 + ", or tske a regular liberal" + PLURAL_NOUN3
> print "course.  Or, if you want to become a/an" + " " + ADJECTIVE2
> print "engineer, you can study" + " " + ADJECTIVE3
> print "mathmatics and differential" + " " + PLURAL_NOUN4 + ". Then after" + " " + NUMBER1
> print "years, if you want to continue your studis, you can write a/an" + " " + NOUN1
> print "and become a Doctor of" + " " + PLURAL_NOUN5 + ". When you get out into the world, if you have a diploma from a university, you will be able to get a job as a/an" + " " + AN_OCCUPATION1 + ".  If you don't have a diploma, you will have to take a job as a/an" + " " + AN_OCCUPATION2 + ".  So it's important that you study hard in highschool so you will do well on your College Enterence" + " " + PLURAL_NOUN6 + ".  Remember, 'A little learning is a/an" + " " + ADJECTIVE4
> print "thing."
> 
> print '</html>'
> 
> #HERE IS MY PROBLEM
> #
> #
> #
> #
> print """
> <FORM METHOD=POST ACTION="http://localhost:8080/cgi-bin/LIB_finalexam.py">
> 
> <CENTER><TABLE WIDTH="100%" >
> <TR><TD ALIGN=RIGHT WIDTH="20%"></TD>
>     <TD><INPUT type=submit name=send value="Next Mad Lib!"></TD></TR>
> </TABLE></CENTER>
> </FORM>
> """
> #
> #
> #MY PROBLEM IS ABOVE
> #
> #
> print """
> <FORM METHOD=POST ACTION="http://localhost:8080/cgi-bin/LIB_finalexam.py">
> <UL><I>If you want to input new words, then please fill out the entire form:</I></UL>
> <BR>
> <BR>
> <CENTER><TABLE WIDTH="100%" >
> <TR><TD ALIGN=RIGHT WIDTH="20%">ADJECTIVE::</TD>
>     <TD><INPUT TYPE=text NAME=ADJECTIVE1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">PLURAL_NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=PLURAL_NOUN1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">PLURAL_NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=PLURAL_NOUN2 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">PLURAL_NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=PLURAL_NOUN3 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">ADJECTIVE:</TD>
>     <TD><INPUT TYPE=text NAME=ADJECTUIVE2 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">ADJECTIVE:</TD>
>     <TD><INPUT TYPE=text NAME=ADJECTIVE3 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">PLURAL_NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=PLURAL_NOUN4 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NUMBER:</TD>
>     <TD><INPUT TYPE=text NAME=NUMBER1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=NOUN1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">PLURAL_NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=PLURAL_NOUN5 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">AN_OCCUPATION:</TD>
>     <TD><INPUT TYPE=text NAME=AN_OCCUPATION1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">AN_OCCUPATION:</TD>
>     <TD><INPUT TYPE=text NAME=AN_OCCUPATION2 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">PLURAL_NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=PLURAL_NOUN6 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">ADJECTIVE:</TD>
>     <TD><INPUT TYPE=text NAME=ADJECTIVE4 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">A_PERSON:</TD>
>     <TD><INPUT TYPE=text NAME=A_PERSON1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=NOUN2 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=NOUN3 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">A_PERSON:</TD>
>     <TD><INPUT TYPE=text NAME=A_PERSON2 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NUMBER:</TD>
>     <TD><INPUT TYPE=text NAME=NUMBER2 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=NOUN4 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">FAMOUS_PERSON:</TD>
>     <TD><INPUT TYPE=text NAME=*FAMOUS_PERSON1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">VERB:</TD>
>     <TD><INPUT TYPE=text NAME=VERB1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NAME:</TD>
>     <TD><INPUT TYPE=text NAME=NAME1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NAME:</TD>
>     <TD><INPUT TYPE=text NAME=NAME2 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=NOUN5 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=NOUN6 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%"></TD>
>     <TD><INPUT type=submit name=send value="A New Mad Lib Please!"></TD></TR>
> <BR>
> <UL><I>Don't forget:
> <BR>    An <B> ADJECTIVE </B> describes something or somebody.  Lumpy, soft, blond, ugly, messay, and short are adjectives.
> <BR>    An <B> ADVERB </B> tells how something is done.  It modifies a verb and usually ends in 'ly'.
> <BR>    A <B> NOUN </B> is the name of a person, place, or thing.  Woman, sidewalk, umbrella, horse-collar, bathtub, and nose are nouns.
> <BR>    A <B> VERB </B> is an action word.  Run, pitch, jump, and swim are verbs.
> <BR>    When a <B> GEOGRAPHICAL LOCATION</B> is asked for, give any sort of place: a country or city [Spain, Cleaveland]
>             or a room [Bathroom, Kitchen].
> <BR>    An <B> EXCLAMATION </B> or <B> SILLY WORD </B> is any sort of funny sound, gasp, grunt, or outcry.
>             Wow! Ouch! Whomp! Ick! Gadzooks! are exclamations and silly words.
> <BR>    When a specific word is asked for like <B> NUMBER, A COLOR, AN ANIMAL, </B> or <B> A PART OF THE BODY </B>,
>             what is meant is a word that is one of those things.
> <BR>    When a <B> PLURAL </B> is asked for be sure to pluralize the word.
> </UL>
> </TABLE></CENTER>
> </FORM>
> 
> """
> 
> form = cgi.FieldStorage()
> 
> if len(form)>0:
>     ADJECTIVE1 = form.getvalue('ADJECTIVE1')
>     ADJECTIVE2 = form.getvalue('ADJECTIVE2')
>     ADJECTIVE3 = form.getvalue('ADJECTIVE3')
>     ADJECTIVE4 = form.getvalue('ADJECTIVE4')
>     PLURAL_NOUN1 = form.getvalue('PLURAL_NOUN1')
>     PLURAL_NOUN2 = form.getvalue('PLURAL_NOUN2')
>     PLURAL_NOUN3 = form.getvalue('PLURAL_NOUN3')
>     PLURAL_NOUN4 = form.getvalue('PLURAL_NOUN4')
>     PLURAL_NOUN5 = form.getvalue('PLURAL_NOUN5')
>     PLURAL_NOUN6 = form.getvalue('PLURAL_NOUN6')
>     NUMBER1 = form.getvalue('NUMBER1')
>     NUMBER2 = form.getvalue('NUMBER2')
>     NOUN1 = form.gervalue('NOUN1')
>     NOUN2 = form.getvalue('NOUN2')
>     NOUN3 = form.getvalue('NOUN3')
>     NOUN4 = form.getvalue('NOUN4')
>     NOUN5 = form.getvalue('NOUN5')
>     NOUN6 = form.getvalue('NOUN6')
>     AN_OCCUPATION1 = form.getvalue('AN_OCCUPATION1')
>     AN_OCCUPATION2 = form.getvalue('AN_OCCUPATION2')
>     A_PERSON1 = form.getvalue('A_PERSON1')    
>     A_PERSON2 = form.getvalue('A_PERSON2')
>     NAME1 = form.getvalue('NAME1')
>     NAME2 = form.getvalue('NAME2')
>     VERB1 = form.getvalue('VERB1')
>     FAMOUS_PERSON1 = form.getvalue('FAMOUS_PERSON1')
> else:
>     ADJECTIVE1 = 'blond'
>     ADJECTIVE2 = 'blond'
>     ADJECTIVE3 = 'blond'
>     ADJECTIVE4 = 'blond'
>     PLURAL_NOUN1 = 'women'
>     PLURAL_NOUN2 = 'men'
>     PLURAL_NOUN3 = 'women'
>     PLURAL_NOUN4 = 'men'
>     PLURAL_NOUN5 = 'women'
>     PLURAL_NOUN6 = 'men'
>     NUMBER1 = '1'
>     NUMBER2 = '2'
>     NOUN1 = 'woman'
>     NOUN2 = 'man'
>     NOUN3 = 'woman'
>     NOUN4 = 'man'
>     NOUN5 = 'woman'
>     NOUN6 = 'man'
>     AN_OCCUPATION1 = 'teacher'
>     AN_OCCUPATION2 = 'waitress'
>     A_PERSON1 = ' fill in later '
>     A_PERSON2 = ' fill in later '
>     NAME1 = ' fill in later '
>     NAME2 = ' fill in later '
>     VERB1 = 'run'
>     FAMOUS_PERSON1 = 'GOD'
> 

> #!c:/Python22/python.exe
> # http://localhost:8080/cgi-bin/final.py
> # Program Files\Apache Group\Apache2\cgi-bin\final.py
> # Final Lab - python CGI script
> # Elizabeth Bernert
> 
> import cgi
> import cgitb; cgitb.enable()
> 
> print "Content-type: text/html\n\n"
> 
> print """
> <FORM METHOD=POST ACTION="http://localhost:8080/cgi-bin/LIB_college.py">
> <UL><I>Please fill out the entire form:</I></UL>
> <UL><I>Don't forget:
> <BR>    An <B> ADJECTIVE </B> describes something or somebody.  Lumpy, soft, blond, ugly, messay, and short are adjectives.
> <BR>    An <B> ADVERB </B> tells how something is done.  It modifies a verb and usually ends in 'ly'.
> <BR>    A <B> NOUN </B> is the name of a person, place, or thing.  Woman, sidewalk, umbrella, horse-collar, bathtub, and nose are nouns.
> <BR>    A <B> VERB </B> is an action word.  Run, pitch, jump, and swim are verbs.
> <BR>    When a <B> GEOGRAPHICAL LOCATION</B> is asked for, give any sort of place: a country or city [Spain, Cleaveland]
>             or a room [Bathroom, Kitchen].
> <BR>    An <B> EXCLAMATION </B> or <B> SILLY WORD </B> is any sort of funny sound, gasp, grunt, or outcry.
>             Wow! Ouch! Whomp! Ick! Gadzooks! are exclamations and silly words.
> <BR>    When a specific word is asked for like <B> NUMBER, A COLOR, AN ANIMAL, </B> or <B> A PART OF THE BODY </B>,
>             what is meant is a word that is one of those things.
> <BR>    When a <B> PLURAL </B> is asked for be sure to pluralize the word.
> </UL>
> <BR>
> <BR>
> <CENTER><TABLE WIDTH="100%" >
> <TR><TD ALIGN=RIGHT WIDTH="20%">ADJECTIVE::</TD>
>     <TD><INPUT TYPE=text NAME=ADJECTIVE1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">PLURAL_NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=PLURAL_NOUN1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">PLURAL_NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=PLURAL_NOUN2 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">PLURAL_NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=PLURAL_NOUN3 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">ADJECTIVE:</TD>
>     <TD><INPUT TYPE=text NAME=ADJECTIVE2 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">ADJECTIVE:</TD>
>     <TD><INPUT TYPE=text NAME=ADJECTIVE3 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">PLURAL_NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=PLURAL_NOUN4 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NUMBER:</TD>
>     <TD><INPUT TYPE=text NAME=NUMBER1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=NOUN1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">PLURAL_NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=PLURAL_NOUN5 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">AN_OCCUPATION:</TD>
>     <TD><INPUT TYPE=text NAME=AN_OCCUPATION1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">AN_OCCUPATION:</TD>
>     <TD><INPUT TYPE=text NAME=AN_OCCUPATION2 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">PLURAL_NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=PLURAL_NOUN6 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">ADJECTIVE:</TD>
>     <TD><INPUT TYPE=text NAME=ADJECTIVE4 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">A_PERSON:</TD>
>     <TD><INPUT TYPE=text NAME=A_PERSON1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=NOUN2 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=NOUN3 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">A_PERSON:</TD>
>     <TD><INPUT TYPE=text NAME=A_PERSON2 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NUMBER:</TD>
>     <TD><INPUT TYPE=text NAME=NUMBER2 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=NOUN4 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">FAMOUS_PERSON:</TD>
>     <TD><INPUT TYPE=text NAME=*FAMOUS_PERSON1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">VERB:</TD>
>     <TD><INPUT TYPE=text NAME=VERB1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NAME:</TD>
>     <TD><INPUT TYPE=text NAME=NAME1 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NAME:</TD>
>     <TD><INPUT TYPE=text NAME=NAME2 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=NOUN5 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%">NOUN:</TD>
>     <TD><INPUT TYPE=text NAME=NOUN6 SIZE=50 VALUE=""></TD</TR>
> <TR><TD ALIGN=RIGHT WIDTH="20%"></TD>
>     <TD><INPUT type=submit name=send value="Send the words!"></TD></TR>
> </TABLE></CENTER>
> </FORM>
> 
> """
> 
> form = cgi.FieldStorage()
> 
> if len(form)>0:
>     ADJECTIVE1 = form.getvalue('ADJECTIVE1')
>     ADJECTIVE2 = form.getvalue('ADJECTIVE2')
>     ADJECTIVE3 = form.getvalue('ADJECTIVE3')
>     ADJECTIVE4 = form.getvalue('ADJECTIVE4')
>     PLURAL_NOUN1 = form.getvalue('PLURAL_NOUN1')
>     PLURAL_NOUN2 = form.getvalue('PLURAL_NOUN2')
>     PLURAL_NOUN3 = form.getvalue('PLURAL_NOUN3')
>     PLURAL_NOUN4 = form.getvalue('PLURAL_NOUN4')
>     PLURAL_NOUN5 = form.getvalue('PLURAL_NOUN5')
>     PLURAL_NOUN6 = form.getvalue('PLURAL_NOUN6')
>     NUMBER1 = form.getvalue('NUMBER1')
>     NUMBER2 = form.getvalue('NUMBER2')
>     NOUN1 = form.gervalue('NOUN1')
>     NOUN2 = form.getvalue('NOUN2')
>     NOUN3 = form.getvalue('NOUN3')
>     NOUN4 = form.getvalue('NOUN4')
>     NOUN5 = form.getvalue('NOUN5')
>     NOUN6 = form.getvalue('NOUN6')
>     AN_OCCUPATION1 = form.getvalue('AN_OCCUPATION1')
>     AN_OCCUPATION2 = form.getvalue('AN_OCCUPATION2')
>     A_PERSON1 = form.getvalue('A_PERSON1')    
>     A_PERSON2 = form.getvalue('A_PERSON2')
>     NAME1 = form.getvalue('NAME1')
>     NAME2 = form.getvalue('NAME2')
>     VERB1 = form.getvalue('VERB1')
>     FAMOUS_PERSON1 = form.getvalue('FAMOUS_PERSON1')
> else:
>     ADJECTIVE1 = 'blond'
>     ADJECTIVE2 = 'blond'
>     ADJECTIVE3 = 'blond'
>     ADJECTIVE4 = 'blond'
>     PLURAL_NOUN1 = 'women'
>     PLURAL_NOUN2 = 'men'
>     PLURAL_NOUN3 = 'women'
>     PLURAL_NOUN4 = 'men'
>     PLURAL_NOUN5 = 'women'
>     PLURAL_NOUN6 = 'men'
>     NUMBER1 = '1'
>     NUMBER2 = '2'
>     NOUN1 = 'woman'
>     NOUN2 = 'man'
>     NOUN3 = 'woman'
>     NOUN4 = 'man'
>     NOUN5 = 'woman'
>     NOUN6 = 'man'
>     AN_OCCUPATION1 = 'teacher'
>     AN_OCCUPATION2 = 'waitress'
>     A_PERSON1 = ' fill in later '
>     A_PERSON2 = ' fill in later '
>     NAME1 = ' fill in later '
>     NAME2 = ' fill in later '
>     VERB1 = 'run'
>     FAMOUS_PERSON1 = 'GOD'

> #!c:/Python22/python.exe
> # http://localhost:8080/cgi-bin/mult.py
> # Program Files\Apache Group\Apache2\cgi-bin\mult.py
> # Final Project - python CGI script
> 
> import cgi
> 
> import cgitb; cgitb.enable()
> 
> print "Content-type: text/html\n\n"
> 
> form = cgi.FieldStorage()
> 
> ADJECTIVE1 = str(form.getvalue('ADJECTIVE1'))
> A_PERSON1 = str(form.getvalue('A_PERSON1'))
> NOUN1 = str(form.getvalue('NOUN1'))
> PLURAL_NOUN1 = str(form.getvalue('PLURAL_NOUN1'))
> NOUN2 = str(form.getvalue('NOUN2'))
> NOUN3 = str(form.getvalue('NOUN3'))
> A_PERSON2 = str(form.getvalue('A_PERSON2'))
> NUMBER1 = str(form.getvalue('NUMBER1'))
> PLURAL_NOUN2 = str(form.getvalue('PLRAL_NOUN2'))
> NOUN4 = str(form.getvalue('NOUN4'))
> PLURAL_NOUN3 = str(form.getvalue('PLURAL_NOUN3'))
> 
> print '<html>'
> 
> print "Well it's time for final exams again.  Her are some sample questions with" + " " + ADJECTIVE1
> print "answers that may give you an idea of what final exams are like:"
> print "<BR> <BR> <B> QUESTION: </B>"
> print "<BR> Who was the first president of the United States?"
> print "<BR> <B> ANSWER: </B>"
> print "<BR>" + A_PERSON1
> print ", who was also called, 'The" + " " + NOUN1
> print "of Our Country."
> print "<BR> <BR> <B> QUESTION: </B>"
> print "<BR> What is the shortest distance between two" + " " + PLURAL_NOUN1 + "?"
> print "<BR> <B> ANSWER: </B>"
> print "<BR> A straight" + " " + NOUN2 + "."
> print "<BR> <BR> <B> QUESTION: </B>"
> print "Who said, 'I regret that I only have one" + " " + NOUN3
> print "to give for my country.'?"
> print "<BR> <B> ANSWER: </> "
> print "<BR>" + A_PERSON2 + "."
> 
> print '</html>'


-- 
Tim Johnson <tim@johnsons-web.com>
      http://www.alaska-internet-solutions.com
      http://www.johnsons-web.com