| #!/usr/local/bin/perl |
| |
| use CGI qw(:standard :html3); |
| |
| # Some constants to use in our form. |
| @colors=qw/aqua black blue fuschia gray green lime maroon navy olive |
| purple red silver teal white yellow/; |
| @sizes=("<default>",1..7); |
| |
| # recover the "preferences" cookie. |
| %preferences = cookie('preferences'); |
| |
| # If the user wants to change the background color or her |
| # name, they will appear among our CGI parameters. |
| foreach ('text','background','name','size') { |
| $preferences{$_} = param($_) || $preferences{$_}; |
| } |
| |
| # Set some defaults |
| $preferences{'background'} = $preferences{'background'} || 'silver'; |
| $preferences{'text'} = $preferences{'text'} || 'black'; |
| |
| # Refresh the cookie so that it doesn't expire. This also |
| # makes any changes the user made permanent. |
| $the_cookie = cookie(-name=>'preferences', |
| -value=>\%preferences, |
| -expires=>'+30d'); |
| print header(-cookie=>$the_cookie); |
| |
| # Adjust the title to incorporate the user's name, if provided. |
| $title = $preferences{'name'} ? |
| "Welcome back, $preferences{name}!" : "Customizable Page"; |
| |
| # Create the HTML page. We use several of Netscape's |
| # extended tags to control the background color and the |
| # font size. It's safe to use Netscape features here because |
| # cookies don't work anywhere else anyway. |
| print start_html(-title=>$title, |
| -bgcolor=>$preferences{'background'}, |
| -text=>$preferences{'text'} |
| ); |
| |
| print basefont({SIZE=>$preferences{size}}) if $preferences{'size'} > 0; |
| |
| print h1($title),<<END; |
| You can change the appearance of this page by submitting |
| the fill-out form below. If you return to this page any time |
| within 30 days, your preferences will be restored. |
| END |
| ; |
| |
| # Create the form |
| print hr(), |
| start_form, |
| |
| "Your first name: ", |
| textfield(-name=>'name', |
| -default=>$preferences{'name'}, |
| -size=>30),br, |
| |
| table( |
| TR( |
| td("Preferred"), |
| td("Page color:"), |
| td(popup_menu(-name=>'background', |
| -values=>\@colors, |
| -default=>$preferences{'background'}) |
| ), |
| ), |
| TR( |
| td(''), |
| td("Text color:"), |
| td(popup_menu(-name=>'text', |
| -values=>\@colors, |
| -default=>$preferences{'text'}) |
| ) |
| ), |
| TR( |
| td(''), |
| td("Font size:"), |
| td(popup_menu(-name=>'size', |
| -values=>\@sizes, |
| -default=>$preferences{'size'}) |
| ) |
| ) |
| ), |
| |
| submit(-label=>'Set preferences'), |
| hr; |
| |
| print a({HREF=>"/"},'Go to the home page'); |
| print end_html; |