📄 kousin.cgi
字号:
#!/usr/bin/perl
#--- [注意事项] ------------------------------------------------#
# 1. このスクリプトはフリ—ソフトです。このスクリプトを使用した #
# いかなる损害に对して作者は一切の责任を负いません。 #
# 2. 设置に关する质问はサポ—ト揭示板にお愿いいたします。 #
# 直接メ—ルによる质问は一切お受けいたしておりません。 #
#---------------------------------------------------------------#
# 日本语ライブラリの读み??み
require 'jcode.pl';
# レジストライブラリの读み??み
require 'regist.pl';
# 初期设定ファイルの读み??み
require 'ffadventure.ini';
require 'shop.ini';
#================================================================#
#┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓#
#┃ これより下はCGIに自信のある方以外は??わないほうが无难です ┃#
#┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛#
#================================================================#
#--------------#
# メイン处理 #
#--------------#
if($mente) { &error("バ—ジョンアップ中です。2、30秒ほどお待ち下さい。m(_ _)m"); }
&decode;
if($mode eq 'kousin') { &kousin; }
else { &error("アクセスできません"); }
#┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#┃ オ—トロ—ダ—
#┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
sub AUTOLOAD {
my $name = ($AUTOLOAD =~ /^main::(.+)$/)[0];
($FLAG{'autoload'}++ > 50) && die $AUTOLOAD; # 念のため无限ル—プ防止
defined %SUB or &SUBS;
if (!defined $SUB{$name}) {
&error("定义されていない关数($AUTOLOAD)が呼ばれました。"); exit;
}
eval $SUB{$name}; length($@) && &error("EVAL ERROR: $@ ($AUTOLOAD)");
delete $SUB{$name}; goto &{'main::' . $name};
}
sub SUBS {
%SUB = (
kousin => <<'__SUB__',
#----------------#
# ランキング处理 #
#----------------#
sub kousin {
# ファイルロック
if ($lockkey == 1) { &lock1; }
elsif ($lockkey == 2) { &lock2; }
&set_cookie;
&get_host;
$date = time();
open(IN,"./charalog/$in{'id'}.cgi") or &error('ファイルを开けませんでした。');
@LOG = <IN>;
close(IN);
foreach(@LOG){
($zid,$zpass,$zsite,$zurl,$zname,$zsex,$zchara,$zn_0,$zn_1,$zn_2,$zn_3,$zn_4,$zn_5,$zn_6,$zsyoku,$zhp,$zmaxhp,$zex,$zlv,$zgold,$zlp,$ztotal,$zkati,$zwaza,$zitem,$zmons,$zhost,$zdate,$zmori,$zdef,$ztac,$zkumite) = split(/<>/);
if($in{'id'} eq "$zid") { last; }
}
open(IN,"$chara_file1") or &error('ファイルを开けませんでした。');
@ranker = <IN>;
close(IN);
$hit=0;@rankernew=();
foreach(@ranker){
($cid,$cpass,$csite,$curl,$cname,$csex,$cchara,$cn_0,$cn_1,$cn_2,$cn_3,$cn_4,$cn_5,$cn_6,$csyoku,$chp,$cmaxhp,$cex,$clv,$cgold,$clp,$ctotal,$ckati,$cwaza,$citem,$cmons,$chost,$cdate,$cmori,$cdef,$ctac,$ckumite) = split(/<>/);
if($cid eq "$in{'id'}" and $in{'new'} eq 'new') {
&error("そのIDはすでに登录されています");
}elsif($curl eq "$in{'url'}" and $in{'new'} eq 'new'){
&error("そのURLはすでに登录されています");
}elsif($cid eq "$in{'id'}"){
unshift(@rankernew,"$in{'id'}<>$zpass<>$zsite<>$zurl<>$zname<>$zsex<>$zchara<>$zn_0<>$zn_1<>$zn_2<>$zn_3<>$zn_4<>$zn_5<>$zn_6<>$zsyoku<>$zhp<>$zmaxhp<>$zex<>$zlv<>$zgold<>$zlp<>$ztotal<>$zkati<>$zwaza<>$zitem<>$zmons<>$host<>$date<>$zmori<>$zdef<>$ztac<>$zkumite<>\n");
$hit=1;
}else{
if(($date - $cdate) > (60 * 60 * 24 * $limit)) { next; }
push(@rankernew,"$_");
}
}
if(!$hit){
unshift(@rankernew,"$zid<>$zpass<>$zsite<>$zurl<>$zname<>$zsex<>$zchara<>$zn_0<>$zn_1<>$zn_2<>$zn_3<>$zn_4<>$zn_5<>$zn_6<>$zsyoku<>$zhp<>$zmaxhp<>$zex<>$zlv<>$zgold<>$zlp<>$ztotal<>$zkati<>$zwaza<>$zitem<>$zmons<>$host<>$date<>$zmori<>$zdef<>$ztac<>$zkumite<>\n");
}
open(OUT,">$chara_file2") or &error('ファイルを开けませんでした。');
print OUT @rankernew;
close(OUT);
# ロック解除
if (-e $lockfile) { unlink($lockfile); }
&file_check;
&header;
print <<"EOM";
<h1>ランキングファイルを更新しました</h1>
<hr size=0>
<p>
EOM
&footer;
exit;
}
__SUB__
file_check => <<'__SUB__',
#----------------#
# ファイル比较 #
#----------------#
sub file_check {
# ファイルロック
if ($lockkey == 1) { &lock1; }
elsif ($lockkey == 2) { &lock2; }
$size1 = -s $chara_file1;
$size2 = -s $chara_file2;
if($size2 >= int($size1 * 0.5)){
open(IN,"$chara_file2") or &error('ファイルを开けませんでした。');
@ranking = <IN>;
close(IN);
open(OUT,">$chara_file1") or &error('ファイルを开けませんでした。');
print OUT @ranking;
close(OUT);
}
# ロック解除
if (-e $lockfile) { unlink($lockfile); }
}
__SUB__
footer => <<'__SUB__',
#------------------#
# HTMLのフッタ— #
#------------------#
sub footer {
print "<form action=\"$script\" method=\"post\">\n";
print "<A HREF=\"$scripto\">TOPペ—ジへ</A>\n";
print "<input type=hidden name=id value=$zid>\n";
print "<input type=hidden name=pass value=$zpass>\n";
print "<input type=hidden name=mode value=log_in>\n";
print "<input type=submit value=\"ステ—タス画面へ\">\n";
print "</form>\n";
print "<HR SIZE=0 WIDTH=\"100%\"><DIV align=right class=small>\n";
print "$verkousing edit by <a href=\"http://www.gun-online.com/\" target=\"_top\">GUN</a><br>\n";
print "$verg remodeling by <a href=\"http://www.gun-online.com/\" target=\"_top\">GUN</a><br>\n";
print "$ver by <a href=\"http://www.interq.or.jp/sun/cumro/\">D.Takamiya(CUMRO)</a><br>\n";
print "</DIV></body></html>\n";
}
__SUB__
header => <<'__SUB__',
#------------------#
# HTMLのヘッダ— #
#------------------#
sub header {
print "Cache-Control: no-cache\n";
print "Pragma: no-cache\n";
print "Content-Type: text/html\n\n";
print <<"EOM";
<html>
<head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<STYLE type="text/css">
<!--
body,tr,td,th { font-size: $b_size }
a:hover { color: $alink }
.small { font-size: 10pt }
.b1 {background: #9ac;border-color: #ccf #669 #669 #ccf;color:#fff; border-style: solid; border-width: 1px;}
.b2 {background: #669;border-color: #99c #336 #336 #99c;color:#fff; border-style: solid; border-width: 1px; text-align: center}
.b3 {background: #fff;border-color: #ccf #669 #669 #ccf;}
.dmg { color: #FF0000; font-size: 18pt }
.clit { color: #0000FF; font-size: 18pt }
-->
</STYLE>
EOM
print "<title>$main_title</title></head>\n";
print "<body background=\"$backgif\" bgcolor=\"$bgcolor\" text=\"$text\" link=\"$link\" vlink=\"$vlink\" alink=\"$alink\">\n";
}
__SUB__
);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -