1#!/usr/local/bin/perl 2 3use 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. 15foreach ('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'); 28print 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. 38print start_html(-title=>$title, 39 -bgcolor=>$preferences{'background'}, 40 -text=>$preferences{'text'} 41 ); 42 43print basefont({SIZE=>$preferences{size}}) if $preferences{'size'} > 0; 44 45print h1($title),<<END; 46You can change the appearance of this page by submitting 47the fill-out form below. If you return to this page any time 48within 30 days, your preferences will be restored. 49END 50 ; 51 52# Create the form 53print 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 91print a({HREF=>"/"},'Go to the home page'); 92print end_html; 93