perl-cgi-form


一  此cgi既是提交前的form,也被用来处理form的提交

来自:http://www.devdaily.com/perl/perl-cgi-example-scrolling-list-html-form 

代码: (多选listbox-Multiple-choice SELECTs实例)
不带参数时即为form:http://xxxx/cgi/perl-cgi2.cgi 
当点击form的submit提交时,实际上相当于:http://xxxx/cgi/perl-cgi2.cgi?languages=c&languages=html,此时为对form的处理结果

# !/usr/bin/perl -Tw
#
#  PROGRAM:    scrolling_list.cgi
#
#  PURPOSE:    Demonstrate (1) how to create a scrolling_list form and
#        (2) how to determine the value(s) selected by the user.
#
#  Created by alvin alexander, devdaily.com.
#

#-----------------------------------#
#  1. Create a new Perl CGI object  #
#-----------------------------------#


use CGI;
$query = new CGI;


# ----------------------------------#
#  2. Print the doctype statement  #
#----------------------------------#


print  $query->header;


# ----------------------------------------------------#
#  3. Start the HTML doc, and give the page a title  #
#----------------------------------------------------#


print  $query->start_html( ' My scrolling_list.cgi program ');


# ------------------------------------------------------------#
#  4a.  If the program is called without any params, print   #
#       the scrolling_list form.                             #
#------------------------------------------------------------#


if (! $query->param) {

     print  $query->startform;
     print  $query->h3( ' Select your favorite programming language(s): ');
     print  $query->scrolling_list(-name=> ' languages ',
                 - values=>[
                        ' Basic ',
                        ' C ',
                        ' C++ ',
                        ' Cobol ',
                        ' DHTML ',
                        ' Fortran ',
                        ' HTML ',
                        ' Korn Shell (Unix) ',
                        ' Perl ',
                        ' Java ',
                        ' JavaScript ',
                        ' Python ',
                        ' Ruby ',
                        ' Tcl/Tk '],
                 -size=> 8,
                 -multiple=> ' true ',
                 -default=> ' Perl ');

     #  Notes:
    # ------
    #    "-multiple=>'true'" lets the user make multiple selections
    #        from the scrolling_list
    #    "-default" is optional
    #    "-size" lets you specify the number of visible rows in the list
    #    can also use an optional "-labels" parameter to let the user
    #        see labels you want them to see, while you use
    #        different names for each parameter in your program

    
     print  $query->br;
     print  $query->submit(-value=> ' Submit your favorite language(s) ');
     print  $query->endform;

else {

     # ----------------------------------------------------------#
    #  4b.  If the program is called with parameters, retrieve #
    #  the 'languages' parameter, assign it to an array        #
    #  named $languages, then print the array with each        #
    #  name separated by a <BR> tag.                           #
    #----------------------------------------------------------#


     print  $query->h3( ' Your favorite languages are: ');
     @languages =  $query->param( ' languages ');
     print  " <BLOCKQUOTE>\n ";
     foreach  $language ( @languages) {
         print  " $language<BR> ";
    }
     print  " </BLOCKQUOTE>\n ";

}

# --------------------------------------------------#
#  5. After either case above, end the HTML page.  #
#--------------------------------------------------#

print  $query ->end_html;  


二 也可以实现为html+perlcgi
代码:(多选checkbox实例)

# colors.html
<html><head><title>favorite colors</title></head>
<body>

<b>Pick a Color:</b><br>

<form action= " colors.cgi " method= " POST ">
<input type= " checkbox " name= " red " value= 1> Red<br>
<input type= " checkbox " name= " green " value= 1> Green<br>
<input type= " checkbox " name= " blue " value= 1> Blue<br>
<input type= " checkbox " name= " gold " value= 1> Gold<br>
<input type= " submit ">
</form>
</body>
</html>

# colors.cgi
#!/usr/bin/perl -wT


use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);

print header;
print start_html;

my  @colors = ( " red "" green "" blue "" gold ");
foreach  my  $color ( @colors) {
    if (param( $color)) {
       print  " You picked $color.<br>\n ";
   }
}

print end_html;

 

 

 
其他实例radiobox

# radiobox.html
<html><head><title>Pick a Color</title></head>
<body>
<b>Pick a Color:</b><br>

<form action= " radiobox.cgi " method= " POST ">
<input type= " radio " name= " color " value= " red "> Red<br>
<input type= " radio " name= " color " value= " green "> Green<br>
<input type= " radio " name= " color " value= " blue "> Blue<br>
<input type= " radio " name= " color " value= " gold "> Gold<br>
<input type= " submit ">
</form>
</body></html>

# radiobox.cgi
#!/usr/bin/perl -wT

use strict;
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);

my  %colors = (  red     =>  " #ff0000 ",
                green   =>  " #00ff00 ",
                blue    =>  " #0000ff ",
                gold    =>  " #cccc00 ");

print header;
my  $color = param( ' color ');

#  do some validation - be sure they picked a valid color
if ( exists  $colors{ $color}) {
    print start_html(-title=> " Results ", -bgcolor=> $color);
    print  " You picked $color.<br>\n ";
else {
    print start_html(-title=> " Results ");
    print  " You didn't pick a color! (You picked '$color') ";
}
print end_html;

  

三 cgi实例2


 
  # !/usr/bin/perl  
 use strict;
  use warnings;
  use CGI;
  use CGI::Carp qw(fatalsToBrowser);
 
  sub output_top($);
  sub output_end($);
  sub display_results($);
  sub output_form($);
 
  my  $q = new CGI;
 
  print  $q->header();
 
  #  Output stylesheet, heading etc
 output_top( $q);
 
  if ( $q->param()) {
      #  Parameters are defined, therefore the form has been submitted
     display_results( $q);
 }  else {
      #  We're here for the first time, display the form
     output_form( $q);
 }
 
  #  Output footer and end html
 output_end( $q);
 
  exit  0;
 
  #  Outputs the start html tag, stylesheet and heading
  sub output_top($) {
      my ( $q) =  @_;
      print  $q->start_html(
         -title =>  ' A Questionaire ',
         -bgcolor =>  ' white ',
 }
 
  #  Outputs a footer line and end html tags
  sub output_end($) {
      my ( $q) =  @_;
      print  $q->div( " My Web Form ");
      print  $q->end_html;
 }
 
  #  Displays the results of the form
  sub display_results($) {
      my ( $q) =  @_;
 
      my  $username =  $q->param( ' user_name ');
      print  $username;
      print  $q->br;
 
  #  Outputs a web form
  sub output_form($) {
      my ( $q) =  @_;
      print  $q->start_form(
         -name =>  ' main ',
         -method =>  ' POST ',
     );
 
      print  $q->start_table;
      print  $q->Tr(
        $q->td( ' Name: '),
        $q->td(
          $q->textfield(-name =>  " user_name ", -size =>  50)
       )
     );
 
      print  $q->Tr(
        $q->td( $q->submit(-value =>  ' Submit ')),
        $q->td( ' &nbsp; ')
     );
      print  $q->end_table;
      print  $q->end_form;
 }

 

更多实例
http://www.cgi101.com/book/ch5/text.html 
http://www.comp.leeds.ac.uk/Perl/Cgi/forms.html 
 

完! 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值