fig19_08.pl

来自「PERL语言资料 可以用于PERL程序设计」· PL 代码 · 共 82 行

PL
82
字号
#!/perl/bin/perl
# Fig. 19.8: fig19_08.pl
# Guestbook program that attempts to limit 
# denial of service attacks.

use warnings;
use strict;
use CGI qw( :standard );
use CGI::Carp 'fatalsToBrowser';

$CGI::POST_MAX = 512;
$CGI::DISABLE_UPLOADS = 1;

print( header(), start_html( "Guestbook" ), h1( "Guestbook" ) );

if ( param() ) {
   my $name = param( "name" );
   my $email = param( "email" );
   my $message = param( "message" );

   if ( $name =~ /<.*>/ || $email =~ /<.*>/ ) {
      print( h3( "HTML tags not allowed in Name or E-mail" ), 
         br(), "Please correct your entry and re-send", br(),
         "To include the < or > symbols, use &ampgt or &amplt.",
         br() );
   }
   else {  
      print( h3( "Thank you for signing our guestbook!!!" ) );
      
      # filter to remove HTML tags
      print( $message =~ 
         s/<([^>]*)>/( $1 eq "BR" || $1 eq "br" ) ? 
         "<$1>" : "\&lt$1\&gt"/ge );
      
      open( FILE, ">>guestbook.log" ) or 
         die( "Cannot open guestbook" );
      print( FILE "\n", hr(), "From: ", 
         a( { -href => "mailto:$email" }, $name ), br(), br(),
         $message );    
      close( FILE );
   }
}

open( FILE, "guestbook.log" ) or die( "Cannot open guestbook" );

print while ( <FILE> );
close( FILE );

unless ( -s "guestbook.log" > 1024 ) {
   print( hr(), h4( "Please sign our guestbook:" ), 
      start_form(), "Name: ", textfield( -name => "name" ), 
      br(), "E-mail: ", textfield( -name => "email" ), br(),
      "Enter your message:", br(), 
      textarea( -name => "message", -rows => 5, -columns => 50,
                -wrap => 1 ), br(),
      h4( "Warning: Filtering HTML tags except &ltbr&gt" ),
      br(), submit( -name => "Sign the Guestbook" ), 
      end_form() );
}
else {
   print( h4( "Sorry, the guestbook is full." ),
      "Please try again later.\n" );
}   
   
print( end_html() );
      
###########################################################################
#  (C) Copyright 2001 by Deitel & Associates, Inc. and Prentice Hall.     #
#  All Rights Reserved.                                                   #
#                                                                         #
#  DISCLAIMER: The authors and publisher of this book have used their     #
#  best efforts in preparing the book. These efforts include the          #
#  development, research, and testing of the theories and programs        #
#  to determine their effectiveness. The authors and publisher make       #
#  no warranty of any kind, expressed or implied, with regard to these    #
#  programs or to the documentation contained in these books. The authors #
#  and publisher shall not be liable in any event for incidental or       #
#  consequential damages in connection with, or arising out of, the       #
#  furnishing, performance, or use of these programs.                     #
###########################################################################

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?