EOF
&EndHTML;
}
sub add {
#print "Content-type: text/html\n\n";
&post_error("Необходимое поле `Имя` не заполнено.") unless($FORM{'name'});
# &post_error("Необходимое поле `E-Mail` не заполнено.") unless($FORM{'email'});
&post_error("Пустое сообщение.") unless($FORM{'message'});
my $GDB=local *GDB;
# get_file_lock("$data/guest.lock");
# rename "$data/guest.dat", "$data/guest.dat.bak";
flop $GDB, "+<$data/guest.dat";
my @bak=<$GDB>;
seek $GDB,0,0;
# close BAK;
# open GDB, ">$data/guest.dat";
$nn=$FORM{'message'};
$nn =~ s/`/\'/g;
$nn =~ s/\&/\&/g;
$nn =~ s/"/\"/g;
#$nn =~ s/ / \ /g;
$nn =~ s/</g;
$nn =~ s/>/>/g;
$nn =~ s/\t/ \ \ \ /g;
$nn =~ s/\n\n//g;
$nn =~ s/\n/
/g;
$nn =~ s/\{br\}/
/g;
$nn =~ s/\cM//g;
$FORM{'name'} =~ s/</g;
$FORM{'name'} =~ s/>/>/g;
$FORM{'email'} =~ s/[^a-zA-Z.\@_0-9-]//g;
print $GDB time."\n$FORM{'name'}\n$FORM{'email'}\n$nn\n";
print $GDB @bak;
truncate $GDB, tell $GDB;
flcl $GDB, "$data/guest.dat";
# open BAK, "$data/guest.dat.bak";
# @bak=;
# close BAK;
# print GDB @bak;
# close GDB;
# unlink("$data/guest.dat.bak");
# &release_file_lock("$data/guest.lock");
print "Location: /cgi-bin/guest.cgi?a=view\n\n";
}
########################################################
sub change {
if ($FORM{'pass'} ne $pass) {
&BeginHTML;
print "В доступе отказано.";
&EndHTML;
}
else {
if ($FORM{'maxrec'}) {
$max_records_display=$FORM{'maxrec'};
#get_file_lock("$data/guest.cfg.lock");
my $CFG=local *CFG;
flop $CFG, ">$data/guest.cfg";
print $CFG "$max_records_display\n";
flcl $CFG, "$data/guest.cfg";
# close CFG;
# &release_file_lock("$data/guest.cfg.lock");
&view;
} else {
&BeginHTML;
print "Данные не введены.";
&EndHTML;
}
}
}
########################################################
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+)(;|$)/) {
my $GDB=local *GDB;
# get_file_lock("$data/guest.lock");
# rename "$data/guest.dat", "$data/guest.dat.bak";
flop $GDB, "+<$data/guest.dat";
my @BAK=<$GDB>;
seek $GDB,0,0;
$cid=0; $n=0;
#open BAK, "$data/guest.dat.bak";
while ($n<@BAK) {
$time=$BAK[$n++];
chomp $time;
$name=$BAK[$n++]; chomp $name;
$email=$BAK[$n++]; chomp $email;
$s=$BAK[$n++]; chomp $s;
if ($FORM{"cb$cid"} ne "1") {
print $GDB "$time\n$name\n$email\n$s\n";
}
# $time=
# chomp $time;
# $name=; chomp $name;
# $email=; chomp $email;
# $s=; chomp $s;
# if ($FORM{"cb$cid"} ne "1") {
# print GDB "$time\n$name\n$email\n$s\n";
# }
$cid++;
}
truncate $GDB, tell $GDB;
flcl $GDB, "$data/guest.dat";
# close BAK;
# close GDB;
# unlink("$data/guest.dat.bak");
# &release_file_lock("$data/guest.lock");
}
####======================================================
open GDB, "$data/guest.dat";
$cid=0;
print <
EOF
while (($time=)&&($cid<$FORM{'id'}+$max_records_display)) {
chomp $time;
$name=; chomp $name;
$email=; chomp $email;
$s=; chomp $s;
if ($cid>=$FORM{'id'}) {
&get_date($time);
print "";
print "$date
\n";
print "$name
";
print "$s
\n";
}
$cid++;
}
if ($time ne '') {print "Дальше";}
close GDB;
#-------------------------------------------------------
print <
Закончить режим администрирования
EOF
#-------------------------------------------------------
&EndHTML;
}
#############################################
##
## Config
##
sub ReadConfig {
open CFG,"$data/guest.cfg";
$max_records_display=;
close CFG;
open CFG,"$data/pass.cfg";
$s=;
$s=;
($pass,$nochop)=split /``/, $s;
close CFG;
chomp $max_records_display;
chomp $pass;
open HTML, "../guestbook.htm";
@html=;
close HTML;
$place=0;
for ($n=0;$n<@html;$n++) {
$place=$n+1 if ($html[$n]=~//);
}
}
#####################################################################
###
### GET DATE (date)
###
###############
sub get_date {
my $tm=@_[0];
@days = ('Воскресение','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота');
@months = ('январь','февраль','март','апрель','май','июнь','июль', 'август','сентябрь','октябрь','ноябрь','декабрь');
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($tm);
#if ($hour < 10) { $hour = "0$hour"; }
$m=$mon+1;
if ($m < 10) { $m = "0$m"; }
if ($min < 10) { $min = "0$min"; }
if ($sec < 10) { $sec = "0$sec"; }
#$date = "$days[$wday], $months[$mon] $mday, ".(1900+$year)." в $hour\:$min\:$sec";
$date = "$mday.$m.".(1900+$year)." в $hour:$min";
}
sub post_error {
local($e) = @_;
&BeginHTML;
print "\n";
print "Ошибка размещения
\n";
print "\n";
print "Ошибка размещения вашего сообщения:\n";
print "$e
\n\n";
print "Вы можете нажать кнопку 'Назад' вашго обозревателя, чтобы исправить ошибку.
\n";
print "
\n";
print "";
print "\n";
&EndHTML;
exit;
}