addforum.pl

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

PL
80
字号
#!perl
# Fig. 22.34: addForum.pl
# Adds a forum to the list

use warnings;
use strict;
use CGI qw( :standard );
use XML::DOM;
use Fcntl qw( :flock :DEFAULT );

if ( param ) {
   my ( $parser, $document, $forums, $forum, $name );

   my ( $file, $newfile ) = ( "forums.xml", param( "filename" ) );
   $newfile =~ /^\w+\.xml$/ or die( "Not a valid file: $!" );

   sysopen( NEW, "../htdocs/XML/$newfile", O_WRONLY|O_EXCL|O_CREAT )
      or die( "Could not create: $!" );
   open( FORUMS, "+<../htdocs/XML/$file" ) or 
      die( "Could not open: $!" );
   flock( FORUMS, LOCK_EX );

   $parser = new XML::DOM::Parser;
   $document = $parser->parse( \*FORUMS );
   $forums = $document->getDocumentElement;

   $forum = $document->createElement( "forum" ); 
   $forum->setAttribute( "filename", $newfile );
   $forums->insertBefore( $forum, $forums->getFirstChild );

   $name = $document->createElement( "name" );
   $name->addText( param( "name" ) );
   $forum->appendChild( $name );

   seek( FORUMS, 0, 0 );
   truncate( FORUMS, 0 );
   $document->print( \*FORUMS );
   close( FORUMS );
   
   $document = $parser->parsefile( "../htdocs/XML/template.xml" );
   $forum = $document->getDocumentElement;
   $forum->setAttribute( "file", $newfile );

   $name = $document->createElement( "name" );
   $name->addText( param( "name" ) );
   $forum->appendChild( $name );

   $document->print( \*NEW );
   close( NEW );
   print( redirect( "default.pl" ) ); 
} 
else {
   print( header, start_html( -title => "Add a forum", 
      -style => { -src => "/XML/site.css" } ) );
   print( start_form(),
      "Forum Name", br(),
      textfield( -name => "name", -size => 40 ), br(),
      "Forum File Name", br(),
      textfield( -name => "filename", -size => 40 ), br(),
      submit( -name => "submit", value => "Submit" ), 
      reset(), end_form(), 
      a( { -href => "/cgi-bin/default.pl" }, "Return to Main Page" ), 
      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 + -
显示快捷键?