| [ Team LiB ] |
|
Recipe 19.10 Creating Sticky Widgets19.10.1 ProblemYou want form fields to default to the last values submitted. For instance, you want a search form like Google (http://www.google.com/) where the keywords you searched for appear in the search dialog above the results. 19.10.2 SolutionUse CGI.pm's HTML shortcuts to create your form, which automatically provides previous values as defaults: print textfield("SEARCH"); # previous SEARCH value is the default
19.10.3 DiscussionExample 19-8 is a simple script for producing the list of users currently logged in. Example 19-8. who.cgi #!/usr/bin/perl -wT
# who.cgi - run who(1) on a user and format the results nicely
$ENV{IFS}='';
$ENV{PATH}='/bin:/usr/bin';
use CGI qw(:standard);
# print search form
print header( ), start_html("Query Users"), h1("Search");
print start_form( ), p("Which user?", textfield("WHO")); submit( ), end_form( );
# print results of the query if we have someone to look for
$name = param("WHO");
if ($name) {
print h1("Results");
$html = '';
# call who and build up text of response
foreach (`who`) {
next unless /^$name\s/o; # only lines matching $name
s/&/&/g; # escape HTML
s/</</g;
s/>/>/g;
$html .= $_;
}
# nice message if we didn't find anyone by that name
$html = $html || "$name is not logged in";
print pre($html);
}
print end_html( );
The call to textfield generates HTML for a text entry field whose parameter name is WHO. After printing the form, we check whether we were called with a value for the WHO parameter. If so, we try to find lines in the output from who for that user. 19.10.4 See AlsoThe documentation for the standard CGI module; Recipe 19.4; Recipe 19.6 |
| [ Team LiB ] |
|