#!/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; } elsif($mode eq 'logout') { &kousin; } elsif($mode eq 'logout1') { &logout; } 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; } if($mode eq "kousin"){&set_cookie;} elsif($mode eq "logout"){ # 有効期限無し(ブラウザ終了時まで)、ダミークッキー $cook="id<>\,pass<>"; print "Set-Cookie: FFADV=$cook;\n"; } &get_host; $date = time(); open(IN,"./charalog/$in{'id'}.cgi") or &error('ファイルを開けませんでした。'); @LOG = ; 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 = ; 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($zlv >= 150){ open(FILE,"./syokureki/$zid.cgi"); $syokureki = ; close(FILE); @s_reki = split(/<>/,$syokureki); $s_reki[$zsyoku]=1; open(OUT,">./syokureki/$zid.cgi"); print OUT "$s_reki[0]<>$s_reki[1]<>$s_reki[2]<>$s_reki[3]<>$s_reki[4]<>$s_reki[5]<>$s_reki[6]<>$s_reki[7]<>$s_reki[8]<>$s_reki[9]<>$s_reki[10]<>$s_reki[11]<>$s_reki[12]<>$s_reki[13]<>$s_reki[14]<>$s_reki[15]<>$s_reki[16]<>$s_reki[17]<>$s_reki[18]<>$s_reki[19]<>$s_reki[20]<>$s_reki[21]<>$s_reki[22]<>\n"; close(OUT); } # ロック解除 if (-e $lockfile) { unlink($lockfile); } &file_check; &header; if($mode eq 'kousin'){ print <<"EOM";

ランキングファイル、及び職歴を更新しました


TOPページへ
EOM }elsif($mode eq 'logout'){ print <<"EOM";

お疲れさまでした…



クッキー情報を削除し、ランキングを更新しました。
またいらっしゃって下さいね

TOPページへ EOM } &footer; exit; } __SUB__ logout => <<'__SUB__', #------------------# # ログアウト確認 # #------------------# sub logout{ open(IN,"./charalog/$in{'id'}.cgi") or &error('ファイルを開けませんでした。'); @LOG = ; close(IN); $hit=0; 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" && $in{'pass'} eq "$zpass") {$hit=1; last; } } unless($hit){&error('ファイルを開けませんでした。');} &header; print <<"EOM";

ログアウト確認




ログアウトすると、クッキー情報をあなたのコンピュータから消去します
ログアウトしますか?

※クッキー情報とはログイン時のパスやIDを記憶しておくものです
 消去すると、ID、パス入力ボックスににパスとIDが\表\示されなくなります
 不特定多数の人が使用する所からのアクセスの場合、クッキーが元でID、パスがもれる危険があるので
 消去することをお勧めします

TOPページへ
EOM &footer; } __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 = ; 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 "
\n"; print "ちょっと改造 by ぽちゃ
\n"; print "$verkousing edit by GUN
\n"; print "$verg remodeling by GUN
\n"; print "$ver by D.Takamiya(CUMRO)
\n"; print "
\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"; EOM print "$main_title\n"; print "\n"; } __SUB__ ); }