私設SoS2オーナー応援BBS

新規発言一覧最新記事過去一覧検索ダウンロードページHOME

スレッド

└◇1750:
Re[3]:バグ? [moon] 08/26 22:01

 └◇1751:Re[4]:バグ? [パパート] 08/26 22:19
  └◇1752:Re[5]:バグ? [moon] 08/26 22:43
   └◇1753:Re[6]:バグ? [パパート] 08/27 12:49
    └◇1754:Re[7]:バグ? [moon] 08/27 22:26
     └◇1755:Re[8]:バグ? [パパート] 08/27 23:27<-last


1750● Re[3]:バグ?[ moon ] 2009 08/26 22:01
> なぜか、エラー
> open(IN,"$usrdir$_[0]\.dat") || &error("ID $_[0]は存在しません $usrdir$_[0]\.dat");
> の
> error("ID $_[0]は存在しません $usrdir$_[0]\.dat");
> が、実行されてないような気がします。

ログイン時の現象ということでsub get_userに絞ったわけですが実行されないということは別の場所でのエラーのようです。
他の"ID 〜は存在しません"を変更して試してください。(どのサブルーチンかも重要です。)
スレッド一覧


1751● Re[4]:バグ?[ パパート ] 2009 08/26 22:19
別の場所を調べましたが、ありませんでした。
とりあえず、関係のありそうな、スクリプトを
載せます。

ログイン前
print "つづきからプレイ<br>\n";
    print qq|名前<input type=text name=name value="$c_name">\n|;
    print qq|パスワード<input type=password name=pass value="$c_pass">\n|;
    print qq|4桁のID<input type=password name=id value="$c_id">\n|;
    &OKbuttoninform('','make_conn');
    &form('end');

ログイン

# Sub Make Continue #
sub make_conn {
    if ($Fm{'name'} eq "" && $Fm{'pass'} ne $admpas) { &error("名前を入力してください"); }
    if ($Fm{'pass'} eq "") { &error("パスワードを入力してください"); }
    if ($Fm{'id'} eq "") { &error("4桁のIDを入力してください"); }

    @rcdlines = &get_user("$Fm{'id'}");
    &error("名前がIDと一致しません") if $nm ne $Fm{'name'} && $Fm{'pass'} ne $admpas;
    &error("パスワードが間違っています") if $ps ne $Fm{'pass'} && $Fm{'pass'} ne $admpas;
# &error("現在プレイ中か、前回セーブを行っていないので、ご利用できません。") if ($fg ne 'NS')&&($fg ne 'HS')&&($fg ne 'SS') ;


$now = int((time - $tm) / 3600);
    if ($av eq 'dead') {
        $bp += $now;
        if ($bp >= $def_ha) {
            $av = 'alive';
        $hp = &hpcheck($hp,$xp,$bp - $def_ha);
            $bp = ''
        }
    }
    else { ($hp) = &hprecover($hp,$xp,$sp,$av,$tm,$fg) }


    $lt = time;

    $fg = ''; &userout;
    &cookie_set; &play_form;

&get_user

sub get_user {
return if $getuserflag;
open(IN,"$usrdir$_[0]\.dat") || &error("ID $_[0]は存在しません $usrdir$_[0]\.dat");
    @_ = <IN>;
    close(IN);
if (!@_) { &error("ID $_[0] 読みこみエラー") }
    &get_userflag($_[0],'u');

$userline = shift(@_);
$getuserflag = 1;
    return @_;

}

です。 バグ確認お願いします...
スレッド一覧


1752● Re[5]:バグ?[ moon ] 2009 08/26 22:43
> 別の場所を調べましたが、ありませんでした。

sub errorの「print qq|<B><font color=#FF0000>$_[0]</font></B>\n|;」を以下のようにして呼び出し場所を確認してから試してください。
  print qq|<B><font color=#FF0000>$_[0]</font>|, join(',', (caller(0))[1, 2]), qq|</B>\n|;
スレッド一覧


1753● Re[6]:バグ?[ パパート ] 2009 08/27 12:49
moonさんの、おかげで、直りました。
ちょびっとだけ、指定先がおかしかったです。

ありがとうございました。

最後に

疑問なのですが、なぜこうなってしまったのでしょう?

昨日の
1、正常に動いてた 8時ごろまで
2、それ以降にログインする人にだけ、エラーが、出るようになった。
3、その時間帯 僕は何もいじってない

です。ハッキングとか、あるか心配です;;;
原因(例でもいいので)が、あれば、教えてください。
セキュリティ強化等、修正したいと思います。 
スレッド一覧


1754● Re[7]:バグ?[ moon ] 2009 08/27 22:26
> 疑問なのですが、なぜこうなってしまったのでしょう?
>
> 昨日の
> 1、正常に動いてた 8時ごろまで
> 2、それ以降にログインする人にだけ、エラーが、出るようになった。
> 3、その時間帯 僕は何もいじってない
>
> です。ハッキングとか、あるか心配です;;;
> 原因(例でもいいので)が、あれば、教えてください。
> セキュリティ強化等、修正したいと思います。 

さすがに情報が少ないので何とも言えないです。
CGIのソースファイル自体が書き換えられていたのでしたらWebサーバーおよびFTPサーバーのログを確認してみてはどうでしょうか。(レンタルサーバーでログが見れない場合でも問い合わせれば提供してもらえるかもしれませんし。)
スレッド一覧


1755● Re[8]:バグ?[ パパート ] 2009 08/27 23:27
わかりました。
ありがとうございます。
 
とりあえず、サーバーのほうを確かめてみます。
スレッド一覧

CGIROOM