⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flashbbs.cgi

📁 为了下载我没有办法
💻 CGI
📖 第 1 页 / 共 2 页
字号:
    $com_wid = 42;
    $agent = $ENV{'HTTP_USER_AGENT'};
    if ($agent =~ /MSIE 3/i) {
        $nam_wid = 65;
        $com_wid = 85;
    } elsif ($agent =~ /MSIE 4/i) {
        $nam_wid = 65;
        $com_wid = 55;
    } elsif (($agent =~ /[ja]/i) && ($agent =~ /3\./)) {
        $nam_wid = 46;
        $com_wid = 55;
    }
    print<<"_EOF_";
<CENTER>
<FORM ACTION="flashbbs.cgi" METHOD="post">
<INPUT TYPE=hidden NAME=id VALUE=$ID>
<INPUT TYPE=hidden NAME=md VALUE=reg>
<INPUT TYPE=hidden NAME=no VALUE=$no>
<INPUT TYPE=hidden NAME=tn VALUE=$tn>
<INPUT TYPE=hidden NAME=lx VALUE=$lx>
<INPUT TYPE=hidden NAME=pwd VALUE=$COOKIE{'pwd'}>
<TABLE>
<TR><TD>
<TABLE><TR><TD><TT>
<B><td>发表主题:</td></B>
</TT></TD><TD>
<INPUT TYPE=text NAME=title SIZE=40 MAXLENGTH=80 style=\"background-color:#FFF9CA;border:1 solid black\">
</TD></TR><TR><TD><TT>
<B><td>填写姓名:</td></B>
</TT></TD><TD>
<INPUT TYPE=text NAME=name SIZE=40 MAXLENGTH=42 VALUE="$COOKIE{'name'}" style=\"background-color:#FFF9CA;border:1 solid black\">
</TD></TR><TR><TD><TT>
<B><td>电子邮件:</td></B>
</TT></TD><TD>
<INPUT TYPE=text NAME=email SIZE=40 MAXLENGTH=120 VALUE="$COOKIE{'email'}" style=\"background-color:#FFF9CA;border:1 solid black\">
</TD></TR></TABLE>
</TD></TR><center><TR><TD>
<TEXTAREA NAME=comment ROWS=6 COLS=50 WRAP="soft" style=\"background-color:#FFF9CA;border:1 solid black\"></TEXTAREA>
</TD></TR><TR><TD>
<INPUT TYPE=submit VALUE="发表文章" style=\"height:23px;background-color:#FFCC00;border:1 solid black\">
<INPUT TYPE=reset VALUE="清除" style=\"height:23px;background-color:#FFCC00;border:1 solid black\">
</TD></TR></TABLE></center>
</FORM>
</CENTER>
_EOF_
}
# [ 记事内容表示 ]
sub kiji_view {
    local($data) = $_[0];
    local($no,$res,$lx,$tn,$title,$name,$email,$date,$act,$tm_pwd,$rhost,$ipad,$comment) = &divide_data($data);
    $comment ="<!--$rhost($ipad)-->$comment";
    $comment =~ s/>(&gt;[^<]*)/><FONT COLOR=\"$res_color\">$1<\/FONT>/g;
    $comment =~ s/(http:\/\/[\w\.\~\-\/\?\&\+\=\:\@\%]+)/<A HREF=\"$1\" target=new>$1<\/A>/ig;
    $comment =~ s/(ftp:\/\/[\w\.\~\-\/]+)/<A HREF=\"$1\" target=new>$1<\/A>/ig;
    $comment =~ s/([\w\.\-]+)\@([\w\.\-]+)/<A HREF=\"mailto\:$1\@$2\">$1\@$2<\/A>/ig;

    if ($email) { $name = "<A HREF=\"mailto:$email\">$name</A>"; }
    print<<"_EOF_";
<CENTER><TABLE WIDTH=80% CELLPADDING=5>
<TR><TD ALIGN="center" BGCOLOR="$kiji_title_bgcolor">
<FONT SIZE=+1 COLOR="$kiji_title_color"><B>$title</B></FONT>
</TD></TR><TR><TD BGCOLOR="fff4c8">
<DIV ALIGN="left">发言者$name<FONT COLOR="$em_color">($date)</FONT></DIV>
<P>
$comment
<P>
</TABLE></CENTER>
_EOF_
}
# [ 记事登录处理 ]
sub regist {
    local($title,$name,$email,$comment,$lx,$tn,$pwd,$ref_url) = ($FORM{'title'},$FORM{'name'},$FORM{'email'},$FORM{'comment'},$FORM{'lx'},$FORM{'tn'},$FORM{'pwd'},$ENV{'HTTP_REFERER'});
#########################
$name = &killbadwords("$FORM{'name'}");
$title = &killbadwords("$FORM{'title'}");
$email = &killbadwords("$FORM{'email'}");
$comment = &killbadwords("$FORM{'comment'}");
#########################
    $title =~ s/\r\n//g;
    $title =~ s/\r|\n//g;
    $name  =~ s/\r\n//g;
    $name  =~ s/\r|\n//g;
    $email =~ s/\r\n//g;
    $email =~ s/\r|\n//g;
    $comment =~ s/\r\n/<BR>/g;
    $comment =~ s/\r|\n/<BR>/g;
    $lx++;
    $pwd =~ s/\r\n//g;
    $pwd =~ s/\r|\n//g;
    $ref_url =~ s/\?(.|\n)*//g;
    s/\%7E/\~/g;
    if($base_url && ($ref_url !~ $base_url)){
         &error(1,"不正确。$ref_url<BR>\n");
    }
    if (length($title) > 80) {
        &error(1,"错误、请重新输入。");
    } elsif (!$title) { $title = "没有主题"; }
    if ((!$name) || (length($name) > 42)) {
        &error(1,"没有输入名字,或者字数过多了。");
    }
    if ((($email !~ /(.*)\@(.*)\.(.*)/) && ($email)) || (length($email) > 120)) {
        &error(1,"不正确的电子邮件、或者字数过多了。");
    }
    if ((!$comment) || (length($comment) > $max_msg)) {
        &error(1,"没有输入文章内容、或者字数过多了。");
    }
    if ((!$pwd) || (length($pwd) > 8)) { $pwd = &make_pwd; }
    $file_pwd = crypt($pwd,"FlasH_BBS_Pro");
    &get_date;

    $count = (&read_file($countfile))[0];
    if (++$count > 9999) {
        &error(1,"系统错误、请联络本板管理者。");
    }
    &write_file($countfile,$count);
    $count = substr("0000",length($count)).$count;

    $rhost = $ENV{'REMOTE_HOST'};
    $ipad  = $ENV{'REMOTE_ADDR'};
    if ($FORM{'no'} eq 'root') {
        $kiji_data = "$count<>root<>0<>$count<>$title<>$name<>$email<>$date<>0<>$file_pwd<>$rhost<>$ipad<>$comment\n";
        unshift(@logs,$kiji_data);
    } else {
        foreach $tree (@logs) {
            if ($tn == (split(/<>/,$tree))[0]) {
                @datas = &divide_log($tree);
                $flag1 = 0; $flag2 = 0;
                $kiji_data = "$count<>$FORM{'no'}<>$lx<>$tn<>$title<>$name<>$email<>$date<>0<>$file_pwd<>$rhost<>$ipad<>$comment";
                foreach $data (@datas) {
                    if (($flag2 == 1) && ($temp_lx >= (split(/<>/,$data))[2])){
                        $tree_data = "$tree_data<#>$kiji_data";
                        $flag2 = 2;
                    }
                    if ($flag1) { $tree_data = "$tree_data<#>$data"; }
                    else { $tree_data = $data; $flag1 = 1; }
                    if (($FORM{'no'} == (split(/<>/,$data))[0]) && (!$flag2)) {
                        $flag2 = 1; $temp_lx = (split(/<>/,$data))[2];
                    }
                }
                if ($flag2 == 1){ $tree_data = "$tree_data<#>$kiji_data"; }
                unshift (@new,"$tree_data\n");
            }
            else { push (@new,$tree); }
        }
        @logs = @new;
    }
    if ($max_size <1500) { $max_size = 1500; }
    $size = (stat($logfile))[7];
    while ($size > $max_size) { $size -= length(pop(@logs)); }
    &write_file($logfile,@logs);
    $COOKIE{'name'} = $name;
    $COOKIE{'email'} = $email;
    $COOKIE{'pwd'} = $pwd;
    &set_cookie;
    &html_header("文章内容确定");
    print<<"_EOF_";
<HR width=80\% color=ffcc00>
<P>
<CENTER>
<B>以下是你文章发表内容。</B>
<P>
<FORM ACTION="flashbbs.cgi">
<INPUT TYPE=hidden NAME=id VALUE=$ID>
<INPUT TYPE="submit" VALUE="确定发表内容" style=\"height:23px;background-color:#FFCC00;border:1 solid black\">
</FORM>
</CENTER>
<P>
<HR width=80\% color=ffcc00>
_EOF_
    &kiji_view($kiji_data);
    &html_footer;
    exit;
}
# [ 投稿者削除处理 ]
sub delete {
    @kiji_datas = &divide_log(&search_no2data($FORM{'tn'},@logs));
    $kiji_data = &search_no2data($FORM{'no'},@kiji_datas);
    local($no,$res,$lx,$tn,$title,$name,$email,$date,$act,$file_pwd,$rhost,$ipad,$comment) = &divide_data($kiji_data);
    if (crypt($COOKIE{'pwd'},"FlasH_BBS_Pro") ne $file_pwd) {
        &error(1,"没有指定文章删除。");
    }
    &get_date;
    $kazu = @kiji_datas;
    if ($kazu == 1) {
        foreach $data (@logs) {
            if ($FORM{'no'} != (split(/<>/,$data))[0]) { push(@new,$data); }
        }
    } else {
        $kiji_data = "$no<>$res<>$lx<>$tn<><I>[加入主题者删除]</I><>$name<><>$date<>8<>Null<>$rhost<>$ipad<>发表文章者将这则文章删除了。($date)";
        $flag = 0;
        foreach $data (@kiji_datas) {
            if ($flag) { $tree_data .= "<#>"; } else { $flag = 1; }
            if ($FORM{'no'} == (split(/<>/,$data))[0]) { $tree_data .= $kiji_data; }
            else { $tree_data .= $data; }
        }
        $tree_data =~ s/\n//;
        foreach $data (@logs) {
            if ($FORM{'tn'} != (split(/<>/,$data))[0]) { push(@new,$data); }
            else { push(@new,"$tree_data\n"); }
        }
    }
    &write_file($logfile,@new);
    &html_header("加入主题者删除");
    print<<"_EOF_";
<HR width=80\% color=ffcc00>
<P>
<CENTER>
<B>确定将文章内容删除。</B>
<P>
这是暂时将文章删除~要完全删除有待管理者。
<P>
<FORM ACTION="flashbbs.cgi">
<INPUT TYPE=hidden NAME=id VALUE=$ID>
<INPUT TYPE="submit" VALUE="确定" style=\"height:23px;background-color:#FFCC00;border:1 solid black\">
</FORM>
</CENTER>
<P>
_EOF_
}
# [ 处理关连汛用 ]
sub divide_log {
    local($data) = $_[0];
    chop($data);
    return split(/<#>/,$data);
}
sub divide_data {
    return split(/<>/,$_[0]);
}
sub search_no2data {
    local($no,@datas) = @_;
    local($data);
    foreach $data (@datas) {
        if ($no == (split(/<>/,$data))[0]) { return $data; }
    }
    return 0;
}
sub read_form {
    local($pair,$buffer);
    if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; }
    local(@pairs) = split(/&/,$buffer);
    foreach $pair (@pairs) {
        local($name,$value) = split(/=/,$pair);
        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
        $FORM{$name} = $value;
    }
}
sub check_cookie {
    local($text);
    foreach $text ('font','sort','tree','form','new_mail','res_mail') {
        if (($FORM{$text} ne '') && ($COOKIE{$text} ne $FORM{$text})) { $COOKIE{$text} = $FORM{$text}; }
    }
}
sub get_cookie {
    local($pair,%DUMMY);
    local($cookies) = $ENV{'HTTP_COOKIE'};
    local(@pairs) = split(/;/,$cookies);
    foreach $pair (@pairs) {
        local($name,$value) = split(/=/,$pair);
        $name =~ s/ //g;
        $DUMMY{$name} = $value;
    }
    @pairs = split(/,/,$DUMMY{$cookie_name});
    foreach $pair (@pairs) {
        local($name,$value) = split(/:/,$pair);
        $COOKIE{$name} = $value;
    }
}
sub set_cookie {
    local($cook) = "name\:$COOKIE{'name'}\,email\:$COOKIE{'email'}\,pwd\:$COOKIE{'pwd'}\,font\:$COOKIE{'font'}\,sort\:$COOKIE{'sort'}\,tree\:$COOKIE{'tree'}\,form\:$COOKIE{'form'}\,new_mail\:$COOKIE{'new_mail'}\,res_mail\:$COOKIE{'res_mail'}";
    $ENV{'TZ'} = "GMT"; # 国际标准时取得
    local($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time + 30*24*60*60);
    if ($sec  < 10)  { $sec  = "0$sec";  }
    if ($min  < 10)  { $min  = "0$min";  }
    if ($hour < 10)  { $hour = "0$hour"; }
    if ($mday < 10)  { $mday = "0$mday"; }
    if ($year < 10)  { $year = "0$year"; }
    $mon = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[$mon];
    $youbi = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')[$wday];
    $date_gmt = "$youbi, $mday\-$mon\-$year $hour:$min:$sec GMT";
    print "Set-Cookie: $cookie_name=$cook; expires=$date_gmt\n";
}
sub get_date {
    $ENV{'TZ'} = "JST$time"; # TimeZone
    local($sec,$min,$hour,$day,$mon,$year) = localtime();
    $mon++;
    if ($date_type) {
        if ($sec < 10)  { $sec = "0$sec";   } # 秒的修正
        if ($min < 10)  { $min = "0$min";   } # 分的修正
        if ($hour < 10) { $hour = "0$hour"; } # 时的修正
        if ($date_type > 1) {
            if ($mon < 10)  { $mon = "0$mon";   } # 月的修正
            if ($day < 10)  { $day = "0$day";   } # 日的修正
        }
    }
    $date =~ s/year/$year/ig;
    $date =~ s/mon/$mon/ig;
    $date =~ s/day/$day/ig;
    $date =~ s/hour/$hour/ig;
    $date =~ s/min/$min/ig;
    $date =~ s/sec/$sec/ig;
}
sub read_file {
    local($logfile) = $_[0];
    &lock_file($lock1);&lock_file($lock2);
    if ($lock_error) { &error(1,"错误、请过一会重新输入。"); }
    if (!open(IN,$logfile)) { &unlock_file; &error(1,"记录读入不可"); }
    local(@files) = <IN>;
    close(IN);
    &unlock_file($lock2);&unlock_file($lock1);
    return @files;
}
sub write_file {
    local($logfile,@lines) = @_;
    &lock_file($lock1);&lock_file($lock2);
    if ($lock_error) { &error(1,"错误、请过一会重新输入。"); }
        if (!open(OUT,">$logfile")) { &unlock_file; &error(1,"删除不到记录"); }
    print OUT @lines;
    close(OUT);
    &unlock_file($lock2);&unlock_file($lock1);
    return @lines;
}
sub lock_file {
    local($lockfile) = $_[0];
    if (!$lock_flag) { return 1; }
    local($retry) = 5;
    while (-f $lockfile) {
        if ($retry-- <= 0) {
            local($mtime) = (stat($lockfile))[9];
            if ($mtime < time()-60*15) { &unlock_file($lockfile); }
            $lock_error = 1;
            return 1;
        }
        sleep 1;
    }
    open (LOCK,">$lockfile");
    close(LOCK);
    return 1;
}
sub unlock_file {
    local($lockfile) = $_[0];
    unlink($lockfile);
}
sub make_pwd {
    local($pwd) = '';
    srand;
    for ($i=0;$i<8;$i++) { $pwd .= substr("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",int(rand(62)),1); }
    return $pwd;
}
sub error {
    ($err,$err_msg) = @_;
    if ($err) { print "Content-type: text/html\n\n<HTML><BODY>"; }
    print<<"_EOF_";
<P><TABLE BGCOLOR="white" CELLPADDING=5 WIDTH=100%><TD ALIGN=center>
<FONT COLOR="red"><B>错误:$err_msg</B></FONT>
</TD></TABLE>
</BODY></HTML>
_EOF_
    exit;
}
##### KILLBADWORDS #####
sub killbadwords {
my $ThePost = shift;
$ThePost =~s/(\<)(.+?)(\>)//isg;
$ThePost =~s/\‖//isg;
$ThePost =~s/\n//isg;
return ($ThePost);
}
########## END OF SCRIPT ##########

⌨️ 快捷键说明

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