▼スレッド
│
└◇1749:Re[2]:バグ? [パパート] 08/26 21:42
└◇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
パーミッション を確かめたところ 0000だけ 666じゃなかったです。。(修正しました)スレッド一覧
スクリプトは
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 @_;
}
にしてみました。
(アクセス確認のため)
これで、ログインしようとしても
ID 0000は存在しません
と出ます。
あと 違うIDの人がログインしたら
必ず0000ではなく、その人の、「ID【ID】は存在しません」
と表示されたそうです。
なぜか、エラー
open(IN,"$usrdir$_[0]\.dat") || &error("ID $_[0]は存在しません $usrdir$_[0]\.dat");
の
error("ID $_[0]は存在しません $usrdir$_[0]\.dat");
が、実行されてないような気がします。
どうでしょうか・・・・?
お願いします。
> なぜか、エラースレッド一覧
> open(IN,"$usrdir$_[0]\.dat") || &error("ID $_[0]は存在しません $usrdir$_[0]\.dat");
> の
> error("ID $_[0]は存在しません $usrdir$_[0]\.dat");
> が、実行されてないような気がします。
ログイン時の現象ということでsub get_userに絞ったわけですが実行されないということは別の場所でのエラーのようです。
他の"ID 〜は存在しません"を変更して試してください。(どのサブルーチンかも重要です。)
別の場所を調べましたが、ありませんでした。スレッド一覧
とりあえず、関係のありそうな、スクリプトを
載せます。
ログイン前
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 @_;
}
です。 バグ確認お願いします...
> 別の場所を調べましたが、ありませんでした。スレッド一覧
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|;
moonさんの、おかげで、直りました。スレッド一覧
ちょびっとだけ、指定先がおかしかったです。
ありがとうございました。
最後に
疑問なのですが、なぜこうなってしまったのでしょう?
昨日の
1、正常に動いてた 8時ごろまで
2、それ以降にログインする人にだけ、エラーが、出るようになった。
3、その時間帯 僕は何もいじってない
です。ハッキングとか、あるか心配です;;;
原因(例でもいいので)が、あれば、教えてください。
セキュリティ強化等、修正したいと思います。
> 疑問なのですが、なぜこうなってしまったのでしょう?スレッド一覧
>
> 昨日の
> 1、正常に動いてた 8時ごろまで
> 2、それ以降にログインする人にだけ、エラーが、出るようになった。
> 3、その時間帯 僕は何もいじってない
>
> です。ハッキングとか、あるか心配です;;;
> 原因(例でもいいので)が、あれば、教えてください。
> セキュリティ強化等、修正したいと思います。
さすがに情報が少ないので何とも言えないです。
CGIのソースファイル自体が書き換えられていたのでしたらWebサーバーおよびFTPサーバーのログを確認してみてはどうでしょうか。(レンタルサーバーでログが見れない場合でも問い合わせれば提供してもらえるかもしれませんし。)
わかりました。スレッド一覧
ありがとうございます。
とりあえず、サーバーのほうを確かめてみます。