File:  [Local Repository] / register / prgsrc / register.cgi
Revision 1.6: download - view: text, annotated - select for diffs - revision graph
Tue Sep 11 22:27:12 2001 UTC (22 years, 10 months ago) by boris
Branches: MAIN
CVS tags: HEAD
debugged`:wq

    1: #!/usr/bin/perl
    2: 
    3: =pod
    4: 
    5: =head1 NAME 
    6: 
    7: register.cgi - a universal script for club regiter
    8: 
    9: =head1 SYNOPSIS
   10: 
   11: register.cgi?[I<options>]
   12: 
   13: =head1 DESCRIPTION
   14: 
   15: The script draws the hierarchy in the form suitable for WWW
   16: 
   17: =head1 AUTHOR
   18: 
   19: Boris Veytsman
   20: 
   21: =head1 DATE
   22: 
   23: $Date: 2001/09/11 22:27:12 $
   24: 
   25: =head1 REVISION
   26: 
   27: $Revision: 1.6 $
   28: 
   29: =cut
   30: 
   31: 
   32: ###################################################
   33: # Starting up
   34: ###################################################
   35: 
   36:     use strict;
   37: use vars qw(%ENV);
   38: use CGI qw(:standard);
   39: use DBI;
   40: use POSIX qw(locale_h);
   41: 
   42: setlocale(LC_CTYPE,'russian');
   43: $ENV{'LANG'}='ru_RU.KOI8-R';
   44: my ($SENDMAIL) = "/usr/sbin/sendmail";
   45: my $TO = 'borisv@lk.net, igra@gorlovka.net';
   46: my $FROM = 'borisv@lk.net';
   47: 
   48: my $date='$Date: 2001/09/11 22:27:12 $';
   49: $date =~ s/[^ ]* ([^ ]*) .*/$1/; 
   50: 
   51: 
   52: my $dbh = DBI->connect("DBI:mysql:chgk", "piataev", "")
   53:     or do {
   54: 	print h1("Временные проблемы") . "База данных временно не
   55: 			работает. Заходите попозже.";
   56: 	print &Include_virtual("../dimrub/db/reklama.html");
   57: 	print end_html;
   58: 	die "Can't connect to DB chgk\n";
   59:     };
   60: 
   61: print header;
   62: 
   63: 
   64: ##################################################
   65: # Printing top
   66: ##################################################
   67: print start_html(-"title"=>'Register of Clubs',
   68: 		 -author=>'borisv@lk.net',
   69: 		 -background=>"../images/map.jpg");
   70: print &Include_virtual("../dimrub/db/reklama.html");
   71: print <<END;
   72: <table>
   73: <tr>
   74: <td background=../images/compass.gif valign=top>
   75: END
   76: 
   77: ################################################
   78: # NAVIGATION PANEL
   79: ################################################
   80:     
   81: my $self=url();
   82: 
   83: 
   84: 
   85: ###############################################
   86: # The navigation panel has three special lines
   87: ###############################################
   88: print <<END;
   89: <dl>
   90: <dt><a href="$self?rid=1&level=1000&clubs=0">Все регионы</a></dt>
   91: <dt><a href="$self?rid=1&level=1000&clubs=1">Все клубы</a></dt>
   92: <dt><a href="$self?addclub=1">Добавить клуб</a></dt>
   93: END
   94: 
   95: #################################################
   96: # And the navpanel itself
   97: ##################################################
   98: 
   99:     print ListRegions(dbh=>$dbh,rid=>1,level=>1,tag=>'dt',
  100: 		      self=>$self);
  101:     
  102: print <<END;
  103: </dl>
  104: END
  105: 
  106: 
  107: 
  108:     print <<END;
  109: </td>
  110: <td width=100% valign=top>
  111: END
  112: 
  113: 
  114: ######################################################
  115: #        MAIN PANEL
  116: ######################################################
  117: 
  118: #
  119: # First, we introduce ourselves
  120: #
  121:     print <<END;
  122: 
  123: <h1 align=center>
  124: Журнал "Игра"<br>
  125: и<br>
  126: <a href="http:/znatoki/klub/znat.html"><img 
  127: ismap border=0 src= "http:../images/logo.gif" 
  128: alt="Интернет Клуб Что? Где? Когда?" width=319 height=27></a>
  129: <br>ПРЕДСТАВЛЯЮТ<br>
  130: Регистр Клубов Интеллектуальных Игр
  131: </h1>
  132: END
  133: 
  134: #
  135: # Now check the parameters...
  136: #
  137:     if (param('rid')) {
  138: 	my $rid = param('rid');
  139: 	$rid =~ s/(\d*)/$1/;
  140: 	print ListRegions(dbh=>$dbh,rid=>$rid,
  141: 			  level=>param('level'),
  142: 			  clubs=>param('clubs'),
  143: 			  tag=>'h2',
  144: 			  self=>$self);
  145:     } elsif (param('cid')) {
  146: 	my $cid = param('cid');
  147: 	$cid =~ s/(\d*)/$1/;
  148: 	print ClubInfo(dbh=>$dbh,cid=>$cid,
  149: 		       self=>$self);
  150:     } elsif (param('addclub')) {
  151: 	print AddClub();
  152:     } elsif (param('Submit')) {
  153: 	print SendLetter();
  154:     } else {
  155: 	print <<END;
  156: <dl>
  157: <dt><a href="$self?rid=1&level=1000&clubs=0">Все регионы</a></dt>
  158: <dt><a href="$self?rid=1&level=1000&clubs=1">Все клубы</a></dt>
  159: <dt><a href="$self?addclub=1">Добавить клуб или изменить сведения
  160: о клубе</a></dt>
  161: </dl>
  162: END
  163: }
  164: 
  165: ####################################################################
  166: # And the bottom of the page
  167: ###################################################################
  168: 
  169:     print "<p align=center>";
  170:     print "Эту страничку посмотрели ";
  171:     print `/home/piataev/public_html/cgi-bin/counter.sh /znatoki/cgi-bin/register.cgi`;
  172:     print " раз(а)</p>\n";
  173:     
  174:     print <<END;
  175: <hr>
  176: <address>
  177: <img width = 60 height = 80 src="../images/owl.gif" alt = "owl"> 
  178: <a href="http://users.lk.net/~borisv">
  179: Boris Veytsman</a>, $date
  180: </address>
  181: </body>
  182: </html>
  183: END
  184: 
  185: 
  186:     print <<END;
  187: </td>
  188: </tr>
  189: </table>
  190: END
  191: 
  192: print end_html;
  193: 
  194: exit 0;
  195: 
  196: ###################################################
  197: # Parsing included file
  198: ##################################################
  199: sub Include_virtual {
  200:     my ($fn, $output) = (@_, '');
  201:     
  202:     open F , $fn
  203: 	or return; #die "Can't open the file $fn: $!\n";
  204:     
  205:     while (<F>) {
  206: 	if (/<!--#include/o) {
  207: 	    s/<!--#include virtual="\/(.*)" -->/&Include_virtual($1)/e;
  208: 	}
  209: 	if (/<!--#exec/o) {
  210: 	    s/<!--#exec.*cmd\s*=\s*"([^"]*)".*-->/`$1`/e;
  211: 	}
  212: 	$output .= $_;
  213:     }
  214:     return $output;
  215: }
  216: 
  217: 
  218: 
  219: #############################################################
  220: # Listing the given region and optionally its children
  221: #############################################################
  222: 
  223: 
  224: sub ListRegions {
  225:     my %args = @_;
  226:     my $sth = $args{'dbh'}->prepare("
  227: SELECT Name FROM Regions WHERE RID=$args{'rid'}");
  228:     $sth->execute;
  229:     if (!$sth->rows) {
  230: 	return "";
  231:     }
  232:     my ($name)=$sth->fetchrow_array;
  233:     $name="<a href=\"$self?rid=$args{'rid'}&level=100&clubs=1\">$name</a>";
  234:     my $result="<$args{'tag'}>$name</$args{'tag'}>\n";
  235:     if ($args{'level'}>0) { # Print children
  236: 
  237: 	# Frist, we print clubs
  238: 	if ($args{'clubs'}) {
  239: 	    $result .= ListClubs(%args);
  240: 	}
  241: 	$sth=$args{'dbh'}->prepare("
  242: SELECT Child FROM RegionRegion WHERE Parent=$args{'rid'}");
  243: 	$sth->execute;
  244: 	if ($sth->rows) {
  245: 	    my @kids=();
  246: 	    while (my ($kid)=$sth->fetchrow_array) {
  247: 		push @kids,"rid=$kid";
  248: 	    }
  249: 	    my $clause = join(' OR ', @kids);
  250: 	    $result .= "<dl>\n";
  251: 	    $sth=$args{'dbh'}->prepare("
  252: SELECT rid FROM Regions WHERE $clause ORDER BY Name");
  253: 	    $sth->execute;
  254: 	    while (my ($kid)=$sth->fetchrow_array) {
  255: 		$result .= ListRegions(
  256: 				       %args,'rid'=>$kid,
  257: 				       'level'=>$args{'level'}-1,
  258: 				       'tag'=>'dt');
  259: 	    }
  260: 	    $result .= "</dl>\n";
  261: 	}
  262:     }
  263:     return $result;
  264: }
  265: 
  266: ############################################################
  267: # List the clubs of a given region or a given association
  268: ###########################################################
  269: sub ListClubs {
  270:     my %args = @_;
  271:     my $sth;
  272:     if ($args{'cid'}) {
  273: 	$sth = $args{'dbh'}->prepare("
  274: SELECT Child FROM ClubClub WHERE Parent=$args{'cid'}");
  275:     } else {
  276: 	$sth = $args{'dbh'}->prepare("
  277: SELECT cid FROM ClubRegion WHERE rid=$args{'rid'}");
  278:     }
  279: 
  280:     $sth->execute;
  281: 	
  282:     if (!$sth->rows) {
  283: 	return "";
  284:     }
  285:     
  286:     my $result;
  287: 	
  288:     if ($args{'cid'}) {
  289: 
  290: 	$result=<<END;
  291: <h3>Клубы:</h3>
  292: <dd><dl>\n
  293: END
  294:      } else {
  295:  
  296: 	 $result=<<END;
  297: <dl><dt>Клубы:</dt>
  298: <dd><dl>\n
  299: END
  300:     }
  301:     my @clubs=();
  302:     while (my ($club)=$sth->fetchrow_array) {
  303: 	push @clubs,"cid=$club";
  304:     }
  305:     my $clause = join(' OR ', @clubs);
  306:     $sth=$args{'dbh'}->prepare("
  307: SELECT cid, Name FROM Clubs WHERE $clause ORDER BY Name");
  308:     $sth->execute;
  309:     while (my ($cid,$Name)=$sth->fetchrow_array) {
  310: 	$result .= dt("<a href=\"$self?cid=$cid\">$Name</a>\n");
  311:     }
  312:     $result .= "</dl></dd></dl>\n";
  313: }
  314: 
  315: 
  316: ############################################################
  317: # List the association a given club belongs to
  318: ###########################################################
  319: sub ListParents {
  320:     my %args = @_;
  321:     my $sth;
  322: 
  323:     $sth = $args{'dbh'}->prepare("
  324: SELECT Parent FROM ClubClub WHERE Child=$args{'cid'}");
  325: 
  326:     $sth->execute;
  327: 	
  328:     if (!$sth->rows) {
  329: 	return "";
  330:     }
  331:     
  332:     my $result;
  333: 	
  334:     $result=<<END;
  335: <h3>Коллективный член ассоциаций:</h3>
  336: <dd><dl>\n
  337: END
  338: 
  339:     my @clubs=();
  340:     while (my ($club)=$sth->fetchrow_array) {
  341: 	push @clubs,"cid=$club";
  342:     }
  343:     my $clause = join(' OR ', @clubs);
  344:     $sth=$args{'dbh'}->prepare("
  345: SELECT cid, Name FROM Clubs WHERE $clause ORDER BY Name");
  346:     $sth->execute;
  347:     while (my ($cid,$Name)=$sth->fetchrow_array) {
  348: 	$result .= dt("<a href=\"$self?cid=$cid\">$Name</a>\n");
  349:     }
  350:     $result .= "</dl></dd></dl>\n";
  351: }
  352: 
  353: #############################################################
  354: # The longest subroutine in the list...
  355: #############################################################
  356: sub ClubInfo {
  357:     my %args = @_;
  358:     my $sth = $args{'dbh'}->prepare("
  359: SELECT * FROM Clubs WHERE cid=$args{'cid'}");
  360:     $sth->execute;
  361: 
  362:     if (!$sth->rows) {
  363: 	return "";
  364:     }
  365:     
  366:     my $result="";
  367:     my $club=$sth->fetchrow_hashref;
  368:     $result .= h2($club->{'Name'});
  369: 
  370:     if (my $string=$club->{'Address'}) {
  371: 	$string =~ s/\n/<br>\n/g;
  372: 	$result .= h3('Адрес')."\n".p($string);
  373:     }
  374: 
  375:     if (my $string=$club->{'URL'}) {
  376: 	$string = htmlize($string);
  377: 	$result .= h3('Домашняя страничка')."\n".p($string);
  378:     }
  379: 
  380:     if (my $string=$club->{'Phone'}) {
  381: 	$result .= h3('Телефон')."\n".p($string);
  382:     }
  383: 
  384:     if (my $string=$club->{'Fax'}) {
  385: 	$result .= h3('Факс')."\n".p($string);
  386:     }
  387: 
  388:     if (my $string=$club->{'Email'}) {
  389: 	$string = htmlize($string,'mailto:');
  390: 	$result .= h3('E-mail')."\n".p($string);
  391:     }
  392: 
  393: 
  394:     $result .= ListPeople(%args); 
  395: 
  396:     $result .= ListParents(%args);
  397: 
  398:     $result .= ListClubs(%args); 
  399: 
  400: 
  401:     if (my $string=$club->{'DoB'}) {
  402: 	$result .= h3('История создания клуба')."\n".p($string);
  403:     }
  404: 
  405:     if (my $string=$club->{'Sponsor'}) {
  406: 	$result .= h3('Спонсор')."\n".p($string);
  407:     }
  408: 
  409:     if (my $string=$club->{'Meetings'}) {
  410: 	$result .= h3('Форма деятельности клуба')."\n".p($string);
  411:     }
  412: 
  413:     if (my $string=$club->{'AdultTeams'}) {
  414: 	$result .= h3('Взрослые команды')."\n".p($string);
  415:     
  416:     }
  417: 
  418:     if (my $string=$club->{'KidTeams'}) {
  419: 	$result .= h3('Детские команды')."\n".p($string);
  420:     
  421:     }
  422: 
  423:     if (my $string=$club->{'ForeignFests'}) {
  424: 	$result .= h3('Иногородние фестивали, традиционно посещаемые командами клуба')."\n".p($string);
  425:     
  426:     }
  427: 
  428:     if (my $string=$club->{'Braglist'}) {
  429: 	$result .= h3('Высшие достижения команд клуба')."\n".p($string);
  430:     
  431:     }
  432: 
  433:     if (my $string=$club->{'OwnFests'}) {
  434: 	$result .= h3('Фестивали, организуемые клубом')."\n".p($string);
  435:     
  436:     }
  437: 
  438: 
  439:     return $result;
  440: 
  441: }
  442: 
  443: 
  444: ##############################################################
  445: # Adding a href=... The second optional argument may be 
  446: # 'mailto:'
  447: ##############################################################
  448: 
  449: sub htmlize {
  450:     my($string,$proto)=@_;
  451:     $string =~ s/^\s+//;
  452:     $string =~ s/\s+$//;
  453:     my @entities = split /\s+/, $string;
  454:     my @hrefs=map {"<a href=\"$proto$_\">$_</a>"} @entities;
  455:     return join(", ",@hrefs);
  456: }
  457: 
  458: 
  459: ##############################################################
  460: # List the bosses....
  461: ##############################################################
  462: sub ListPeople {
  463:     my %args = @_;
  464:     my $sth = $args{'dbh'}->prepare("
  465: SELECT pid,Position FROM ClubPeople WHERE cid=$args{'cid'} ORDER BY Weight DESC");
  466:     $sth->execute;
  467: 
  468:     if (!$sth->rows) {
  469: 	return "";
  470:     }
  471: 
  472:     my $result=h3('Руководство');
  473:     while (my($pid,$Position)=$sth->fetchrow_array) {
  474: 	$result .= h4($Position);
  475: 	$result .= ListPerson(%args,pid=>$pid);
  476:     }
  477:     return $result;
  478: }
  479: 
  480: ##############################################################
  481: # Listing one person
  482: #############################################################
  483: sub ListPerson {
  484:     my %args=@_;
  485:     my $sth = $args{'dbh'}->prepare("
  486: SELECT * FROM People WHERE pid=$args{'pid'}");
  487:     $sth->execute;
  488: 
  489:     if (!$sth->rows) {
  490: 	return "";
  491:     }
  492: 
  493:     my @entries=();
  494:     my $person=$sth->fetchrow_hashref;
  495:     if (my $string = $person->{'Name'}) {
  496: 	push @entries, $string;
  497:     }
  498:     if (my $string=$person->{'Address'}) {
  499: 	push @entries, "Адрес: $string";
  500:     }
  501: 
  502:     if (my $string=$person->{'URL'}) {
  503: 	$string = htmlize($string);
  504: 	push @entries, "Домашнаяя страничка: $string";
  505:     }
  506: 
  507:     if (my $string=$person->{'Phone'}) {
  508: 	push @entries, "Телефон: $string";
  509:     }
  510: 
  511:     if (my $string=$person->{'Fax'}) {
  512: 	push @entries, "Факс: $string";
  513:     }
  514: 
  515:     if (my $string=$person->{'Email'}) {
  516: 	$string = htmlize($string,'mailto:');
  517: 	push @entries, "E-mail: $string";
  518:     }
  519: 
  520:     return p(join('; ',@entries).".");
  521: 
  522: }
  523: 
  524: 
  525: #########################################################
  526: # Adding club
  527: #########################################################
  528: sub AddClub {
  529:     my $result=h2("Добавить клуб или изменить информацию о клубе");
  530:     
  531: 
  532:     $result .= start_form;
  533: 
  534:     $result .= h3("Контактная информация");
  535:     $result .= p("Адрес, телефон, email и т.д. ниже -- НЕ адреса руководства
  536: клуба (их Вы введёте ниже), 
  537: а официальные адреса самого клуба. Если отдельного адреса,
  538: телефона, и т.д. у клуба нет, просто оставьте
  539: поля пустыми");
  540:     $result .= table(Tr(td(["Название клуба",
  541: 			    textfield(-name=>'Name',
  542: 				   -size=>60)])),
  543: 		     Tr(td(["Официальный адрес клуба",
  544: 			    textarea(-name=>'Address',
  545: 				     -rows=>5,
  546: 				     -columns=>60)])),
  547: 		     Tr(td(["Страничка клуба",
  548: 			    textfield(-name=>'URL',
  549: 				     -size=>60)])),
  550: 		     Tr(td(["Телефон клуба",
  551: 			    textfield(-name=>'Phone',
  552: 				     -size=>60)])),
  553: 		     Tr(td(["Факс клуба",
  554: 			    textfield(-name=>'Fax',
  555: 				     -size=>60)])),
  556: 		     Tr(td(["E-mail клуба",
  557: 			    textfield(-name=>'Email',
  558: 				     -size=>60)])),
  559: 		     );
  560:     $result .= h3("Руководство клуба");
  561:     $result .= p("Адреса и телефоны ниже будут опубликованы. Если Вы не хотите
  562: афишировать чьи-то адреса и телефоны, просто оставьте соответствующие поля
  563: пустыми");
  564:     $result .= "<ol>\n";
  565:     for(my $i=1;$i<=5;$i++) {
  566: 	$result .=li;
  567: 	$result .= table(
  568: 			 
  569: 			 Tr(td(["Должность",
  570: 				textfield(-name=>"Position$i",
  571: 					  -size=>50)])),
  572: 			 Tr(td(["ФИО",
  573: 				textfield(-name=>"Name$i",
  574: 					  -size=>50)])),
  575: 			 Tr(td(["Адрес",
  576: 				textarea(-name=>"Address$i",
  577: 					 -columns=>50,
  578: 					 -rows=>5)])),
  579: 			 Tr(td(["Телефон",
  580: 				textfield(-name=>"Phone$i",
  581: 					  -size=>50)])),
  582: 			 Tr(td(["Факс",
  583: 				textfield(-name=>"Fax$i",
  584: 					  -size=>50)])),
  585: 			 Tr(td(["Email",
  586: 				textfield(-name=>"Email$i",
  587: 					  -size=>50)])),
  588: 			 Tr(td(["Домашняя страничка",
  589: 				textfield(-name=>"URL$i",
  590: 					  -size=>50)])),
  591: 			 );
  592:     }
  593:     $result .= "</ol>\n";
  594:     $result .= h3("Ассоциации и объединения");
  595:     $result .= table(
  596: 		     Tr(td(["Ассоциации, членом котрых является клуб",
  597: 			    textarea(-name=>'Parents',
  598: 				     -rows=>5,
  599: 				     -columns=>60)])),
  600: 		     Tr(td(["Для ассоциаций: коллективные члены ассоциации",
  601: 			    textarea(-name=>'Members',
  602: 				     -rows=>5,
  603: 				     -columns=>60)])),
  604: 		     );
  605:     $result .= h3("Жизнь клуба");
  606:     $result .= table(
  607: 		     Tr(td(["История создания клуба",
  608: 			    textarea(-name=>'DoB',
  609: 				     -rows=>5,
  610: 				     -columns=>60)])),
  611: 		     Tr(td(["Основной спонсор клуба",
  612: 			    textarea(-name=>'Sponsor',
  613: 				     -rows=>5,
  614: 				     -columns=>60)])),
  615: 		     Tr(td(["Основные формы деятельности клуба",
  616: 			    textarea(-name=>'Meetings',
  617: 				     -rows=>5,
  618: 				     -columns=>60)])),
  619: 		     Tr(td(["Взрослые команды",
  620: 			    textarea(-name=>'AdultTeams',
  621: 				     -rows=>5,
  622: 				     -columns=>60)])),
  623: 		     Tr(td(["Детские команды",
  624: 			    textarea(-name=>'KidTeams',
  625: 				     -rows=>5,
  626: 				     -columns=>60)])),
  627: 		     Tr(td(["Иногородние фестивали, на которые ездят команды клуба",
  628: 			    textarea(-name=>'ForeignFests',
  629: 				     -rows=>5,
  630: 				     -columns=>60)])),
  631: 		     Tr(td(["Высшие достижения команд клуба",
  632: 			    textarea(-name=>'Braglist',
  633: 				     -rows=>5,
  634: 				     -columns=>60)])),
  635: 		     Tr(td(["Фестивали, которые организовывает клуб",
  636: 			    textarea(-name=>'OwnFests',
  637: 				     -rows=>5,
  638: 				     -columns=>60)])),
  639: 		     );
  640: 
  641:     $result .= h3("География клуба (для будущей карты)");
  642:     $result .= table(
  643: 		     Tr(td(["Долгота",
  644: 			    textfield(-name=>"Longitude",
  645: 				      -size=> 60)])),
  646: 		     Tr(td(["Широта",
  647: 			    textfield(-name=>"Latitude",
  648: 				      -size=> 60)])),
  649: 		     );
  650: 
  651:     $result .= h3("Дополнительные вопросы");
  652:     $result .= table(
  653: 
  654: 		     Tr(td(["Что вам больше всего нравится в журнале 'Игра'?",
  655: 			    textarea(-name=>'IgraA',
  656: 				     -rows=>5,
  657: 				     -columns=>60)])),
  658: 		     Tr(td(["Что вам больше всего не нравится в журнале 'Игра'?",
  659: 			    textarea(-name=>'IgraB',
  660: 				     -rows=>5,
  661: 				     -columns=>60)])),
  662: 		     Tr(td(["Что бы вы хотели увидеть в журнале 'Игра' - то 
  663: чего нет в настоящее время?",
  664: 			    textarea(-name=>'IgraC',
  665: 				     -rows=>5,
  666: 				     -columns=>60)])),
  667: 		     );
  668: 
  669:     $result .= h3("Кто регистрировал");
  670:     $result .= table(
  671: 		     Tr(td(["Имя",
  672: 			    textfield(-name=>'RegistrarName',
  673: 				     -size=>60)])),
  674: 		     Tr(td(["Email",
  675: 			    textfield(-name=>'RegistrarEmail',
  676: 				     -size=>60)])),
  677: 		     );
  678: 
  679:     $result .= p("Нажав кнопку 'Submit', Вы отправите Вашу регистрационную 
  680: карточку службе поддержки регистра. Пожалуйста, подождите несколько дней, пока
  681: Ваша информация будет обработана и попадёт в регистр");
  682:     $result .= submit(-name=>'Submit');
  683:     $result .= end_form;
  684:     return $result;
  685: }
  686: 
  687: ###################################################################
  688: # Sending the letter with results
  689: #####################################################################
  690: sub SendLetter {
  691:    open(MAIL,"| $SENDMAIL -t -n");
  692:     print MAIL <<END;
  693: To: $TO
  694: From: $FROM
  695: Subject: Registracionnaya kartochka kluba
  696: MIME-Version: 1.0
  697: Content-type: text/plain; charset=koi8-r
  698: 
  699: END
  700:     foreach my $key (param) {
  701: 	my $value = param($key);
  702: 	if ($value =~ /^\s*$/) {
  703: 	    next;
  704: 	}
  705: 	print MAIL "$key=$value\n\n";
  706:     }
  707: 	    
  708: 
  709:    close MAIL;
  710:    return p("Спасибо за регистрацию. Ваши данные приняты и после ".
  711: 	    "обработки будут внесены в базу данных");
  712: }
  713: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>