Maintaining State
 #!/usr/local/bin/perl
require "cgi-lib.pl";
&ReadParse(*form_data);
print "Content-type: text/html\n\n";
                // Print out form if this is the 
                // users's first request.  You've seen 
                // this already!
if ($form_data{'submit'} eq "")
  {
  print qq!
  <HTML>
  <HEAD>
  <TITLE>Testing Form Input</TITLE>
  </HEAD>
  <BODY>
  <FORM METHOD = "POST" 
                ACTION = "self-refer.cgi">
  <CENTER>
  <TABLE BORDER = "1">
  <TR>
  <TH>First Name</TH>
  <TD><INPUT TYPE = "text" 
                NAME = "f_name"></TD>
  </TR>
    
  <TR>
  <TH>Last Name</TH>
  <TD><INPUT TYPE = "text" 
                NAME = "l_name"></TD>
  </TR>
  
  <TR>
  <TH>Email</TH>
  <TD><INPUT TYPE = "text" 
                NAME = "email"></TD>
  </TR>
     
  </TABLE>
  <P>
  <INPUT TYPE = "SUBMIT" NAME = "submit" 
                VALUE = "submit">
  </CENTERv
  </FORM>
  </BODY>
  </HTML>!;
  exit;
  }
                // If the user has entered 
                // only first name,
                // last name and email, let's 
                // get phone number
                // to. But we must make sure 
                // that we save the
                // values for first nme, last 
                // name and email
                // as hidden form tags.
elsif ($form_data{'submit'} eq "submit")
  {
  print qq!
  <HTML>   
  <HEAD>
  <TITLE>Get More Data While 
                Remembering Old</TITLE>
  </HEAD>
  <BODY>
  You submitted the following information:
  <P>
  <TABLE BORDER = "1">!;
  
  foreach $key (keys(%form_data))
    {
    print qq!
    <TR>
    <TD>$key</TD>
    <TD>$form_data{$key}</TD>
    </TR>!;
    }
  
                // Here is where we ask for the 
                // phone number
  print qq!
  </TABLE>
  <P>
  Thank you very much.  However, we need 
  one more bit of information.
  Please input your phone number below:
  <P>
  <FORM METHOD = "POST" ACTION = "self-refer.cgi"v
  <INPUT TYPE = "TEXT" NAME = "phone">!;
                // Here is were we add the 
                // hidden variables.
                // Note that we do not want to 
                // keep the value
                // for "submit" cause we are 
                // going to create a
                // new submit button with a new 
                // VALUE argument 
                // so that we know which request 
                // is coming in.
  
  foreach $key (keys(%form_data))
    {
    if ($key ne "submit")
      {
      print qq!
      <INPUT TYPE = "HIDDEN" NAME = "$key" 
                VALUE = "$form_data{$key}">!;
      }
    }
   
  print qq!
  <INPUT TYPE = "SUBMIT" NAME = "submit" 
            VALUE = "Final Submit">
  </FORM>
  </BODY>
  </HTML>!;
  }
                // If the user clicked a 
                // button with "Final Submit" 
                // then the above routines 
                // would have both returned 
                // false and we can assume that 
                // the user has entered the 
                // phone number, so we handle it.
  
else 
  {
  print qq!
  <HTML>
  <HEAD>
  <TITLE>Testing Form Input</TITLE>
  </HEAD>
  <BODY>
  <TABLE>!;
    
  foreach $key (keys(%form_data))
  {
  print qq!
  <TR>
  <TD>$key</TD>
  <TD>$form_data{$key}</TD>
  </TR>!;
  }  
  
  print qq!
  </TABLE>
  </BODY>
  </HTML>!;
  }    
Additional Resources:Table of Contents Exercise Four  | 
| 
		Hosted by Graphics & Media Lab
	 http://graphics.cs.msu.su  | 
 | 
mailto: Laboratory |