#!/usr/bin/perl #!perl require "parse.pl"; $data='../dat'; &ReadConfig; #$max_records_display=5; #$pass=''; $FORM{'pass'}=''; $FORM{'id'}=0; &parse_form; # if ($FORM{'a'} eq 'view') { &view } if ($FORM{'a'} eq 'add') { &add } elsif ($FORM{'a'} eq 'delete') { &delete } elsif ($FORM{'a'} eq 'login') { &login } elsif ($FORM{'a'} eq 'admin') { &admin } elsif ($FORM{'a'} eq 'change') { &change } else { require "vote.pl"; &view; #print "Error"; } sub BeginHTML { print "Content-type: text/html\n\n"; for (my $n=0;$n<$place;$n++) {print $html[$n];} } sub EndHTML { for (my $n=$place;$n<@html;$n++) { $html[$n] =~ s //$out_htm/; print $html[$n]; } } sub view { &BeginHTML; open GDB, "$data/heroes.dat"; $cid=0; while (($s=)&&($cid<$FORM{'id'}+$max_records_display)) { chomp $s; ($nick,$spec,$record,$like,$dislike,$pic)=split /\|/, $s; unless ($pic) {$pic='/images/heroes/nopic.jpg';} if ($cid>=$FORM{'id'}) { print <
Ник
$nick
Специализация
$spec
Стаж
$record
Любит
$like
Не любит
$dislike

EOF } $cid++; } if ($time ne '') {print "Дальше";} close GDB; &EndHTML; } sub add { if ($FORM{'pass'} ne $pass) { &BeginHTML; print "В доступе отказано."; &EndHTML; exit; } &get_file_lock("$data/heroes.lock"); rename "$data/heroes.dat", "$data/heroes.dat.bak"; open GDB, ">$data/heroes.dat"; print GDB "$FORM{'nick'}\|$FORM{'spec'}\|$FORM{'record'}\|$FORM{'like'}\|$FORM{'dislike'}\|$FORM{'pic'}\n"; open BAK, "$data/heroes.dat.bak"; @bak=; close BAK; print GDB @bak; close GDB; unlink("$data/heroes.dat.bak"); &release_file_lock("$data/heroes.lock"); print "Location: /cgi-bin/hero.cgi?a=view\n\n"; } ######################################################## sub change { if ($FORM{'pass'} ne $pass) { &BeginHTML; print "В доступе отказано."; &EndHTML; } else { $max_records_display=$FORM{'maxrec'}; &get_file_lock("$data/hero.cfg.lock"); open CFG, ">$data/hero.cfg"; print CFG "$max_records_display\n"; close CFG; &release_file_lock("$data/hero.cfg.lock"); &view; } } ######################################################## sub login { if ($FORM{'pass'} ne $pass) { &BeginHTML; print "Доступ запрещен."; &EndHTML; } else { &BeginHTML; print <
Макс. кол-во сообщений на экране

Ник
Специализация
Стаж
Любит
Не любит
Фото
EOF &EndHTML; ##&delete; } } sub admin { &BeginHTML; print <
Пароль

EOF &EndHTML; } sub delete { &BeginHTML; if ($FORM{'pass'} ne $pass) { print "В доступе отказано."; return} #####======================================================= @ks=keys(%FORM); $sk=join (';',@ks); if ($sk=~/(;cb\d+)(;|$)/) { &get_file_lock("$data/heroes.lock"); rename "$data/heroes.dat", "$data/heroes.dat.bak"; open GDB, ">$data/heroes.dat"; $cid=0; open BAK, "$data/heroes.dat.bak"; while ($s=) { if ($FORM{"cb$cid"} ne "1") { print GDB $s; } $cid++; } close BAK; close GDB; unlink("$data/heroes.dat.bak"); &release_file_lock("$data/heroes.lock"); } ####====================================================== open GDB, "$data/heroes.dat"; $cid=0; print < EOF while (($s=)&&($cid<$FORM{'id'}+$max_records_display)) { chomp $s; if ($cid>=$FORM{'id'}) { ($nick, $spec, $record, $like, $dislike, $pic)=split /\|/, $s; print ""; print "Ник: $nick
\n"; print "Специализация: $spec
\n"; print "Стаж: $record

\n"; print "
\n"; } $cid++; } if ($time ne '') {print "Дальше";} close GDB; #------------------------------------------------------- print < Закончить режим администрирования EOF #------------------------------------------------------- &EndHTML; } ############################################# ## ## Config ## sub ReadConfig { open CFG,"$data/hero.cfg"; $max_records_display=; close CFG; open CFG,"$data/pass.cfg"; $s=; $s=; ($pass,$nochop)=split /``/, $s; close CFG; chomp $max_records_display; open HTML, "../heroes.htm"; @html=; close HTML; $place=0; for ($n=0;$n<@html;$n++) { $place=$n+1 if ($html[$n]=~//); } }