Home | History | Annotate | Download | only in eg
      1 #!/usr/local/bin/perl
      2 
      3 use CGI qw(:standard :html3);
      4 
      5 # Some constants to use in our form.
      6 @colors=qw/aqua black blue fuschia gray green lime maroon navy olive
      7     purple red silver teal white yellow/;
      8 @sizes=("<default>",1..7);
      9 
     10 # recover the "preferences" cookie.
     11 %preferences = cookie('preferences');
     12 
     13 # If the user wants to change the background color or her
     14 # name, they will appear among our CGI parameters.
     15 foreach ('text','background','name','size') {
     16     $preferences{$_} = param($_) || $preferences{$_};
     17 }
     18 
     19 # Set some defaults
     20 $preferences{'background'} = $preferences{'background'} || 'silver';
     21 $preferences{'text'} = $preferences{'text'} || 'black';
     22 
     23 # Refresh the cookie so that it doesn't expire.  This also
     24 # makes any changes the user made permanent.
     25 $the_cookie = cookie(-name=>'preferences',
     26 			 -value=>\%preferences,
     27 			 -expires=>'+30d');
     28 print header(-cookie=>$the_cookie);
     29 
     30 # Adjust the title to incorporate the user's name, if provided.
     31 $title = $preferences{'name'} ? 
     32     "Welcome back, $preferences{name}!" : "Customizable Page";
     33 
     34 # Create the HTML page.  We use several of Netscape's
     35 # extended tags to control the background color and the
     36 # font size.  It's safe to use Netscape features here because
     37 # cookies don't work anywhere else anyway.
     38 print start_html(-title=>$title,
     39 		 -bgcolor=>$preferences{'background'},
     40 		 -text=>$preferences{'text'}
     41 		 );
     42 
     43 print basefont({SIZE=>$preferences{size}}) if $preferences{'size'} > 0;
     44 
     45 print h1($title),<<END;
     46 You can change the appearance of this page by submitting
     47 the fill-out form below.  If you return to this page any time
     48 within 30 days, your preferences will be restored.
     49 END
     50     ;
     51 
     52 # Create the form
     53 print hr(),
     54     start_form,
     55     
     56     "Your first name: ",
     57     textfield(-name=>'name',
     58 	      -default=>$preferences{'name'},
     59 	      -size=>30),br,
     60     
     61     table(
     62 	  TR(
     63 	     td("Preferred"),
     64 	     td("Page color:"),
     65 	     td(popup_menu(-name=>'background',
     66 			   -values=>\@colors,
     67 			   -default=>$preferences{'background'})
     68 		),
     69 	     ),
     70 	  TR(
     71 	     td(''),
     72 	     td("Text color:"),
     73 	     td(popup_menu(-name=>'text',
     74 			   -values=>\@colors,
     75 			   -default=>$preferences{'text'})
     76 		)
     77 	     ),
     78 	  TR(
     79 	     td(''),
     80 	     td("Font size:"),
     81 	     td(popup_menu(-name=>'size',
     82 			   -values=>\@sizes,
     83 			   -default=>$preferences{'size'})
     84 		)
     85 	     )
     86 	  ),
     87 
     88     submit(-label=>'Set preferences'),
     89     hr;
     90 	   
     91 print a({HREF=>"/"},'Go to the home page');
     92 print end_html;
     93