Dancer-Plugin-FakeCGI
view release on metacpan or search on metacpan
examples/cgi-bin/CGI_pm_customize.pl view on Meta::CPAN
# 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;
( run in 1.359 second using v1.01-cache-2.11-cpan-364913b4093 )