私設SoS2オーナー応援BBS

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

スレッド

└◇475:
勢力の掲示板 [masaki] 04/19 17:09

 ├◇476:Re:勢力の掲示板 [masaki] 04/19 17:26
 │└◇477:Re[2]:勢力の掲示板 [moon] 04/19 19:08
 │ ├◇478:Re[3]:勢力の掲示板 [moon] 04/19 19:36
 │ └◇479:Re[3]:勢力の掲示板 [masaki] 04/19 19:51
 │  └◇480:Re[4]:勢力の掲示板 [moon] 04/19 20:57
 │   └◇481:Re[5]:勢力の掲示板 [masaki] 04/19 21:31
 │    └◇482:Re[6]:勢力の掲示板 [moon] 04/19 22:21
 │     └◇483:Re[7]:勢力の掲示板 [masaki] 04/20 07:32
 │      └◇484:Re[8]:勢力の掲示板 [moon] 04/20 10:19
 │       ├◇485:補足&訂正 [moon] 04/20 10:34
 │       └◇486:Re[9]:勢力の掲示板 [masaki] 04/20 13:00
 │        └◇487:Re[10]:勢力の掲示板 [moon] 04/20 14:12
 │         └◇488:Re[11]:勢力の掲示板 [masaki] 04/20 15:27
 │          └◇489:Re[12]:勢力の掲示板 [moon] 04/20 17:49
 │           └◇490:Re[13]:勢力の掲示板 [masaki] 04/20 19:14
 │            └◇491:Re[14]:勢力の掲示板 [moon] 04/20 21:46
 └◇492:Re:勢力の掲示板 [masaki] 04/20 22:14
  └◇493:Re[2]:勢力の掲示板 [moon] 04/20 22:33
   └◇494:Re[3]:勢力の掲示板 [masaki] 04/21 06:28
    └◇495:Re[4]:勢力の掲示板 [moon] 04/21 09:08
     └◇496:Re[5]:勢力の掲示板 [masaki] 04/21 19:38<-last


475● 勢力の掲示板[ masaki ] 2003 04/19 17:09
お久しぶりです(^^
また初歩的なミスがあるかもしれませんが、どうしても出来ないので質問させていただきます。
「勢力別掲示板」(satosiさんのところで公開されているものです)について質問です。(^^;
#main program#に
if ($Fm{'mode'} eq 'abl_bbs_before') { require 'ability_bbs.pl'; &play_form }
if ($Fm{'mode'} eq 'abl_bbs_after') { require 'ability_bbs.pl'; &play_form }

#sub play form#に
&abl_bbs_after if $Fm{'mode'} eq 'abl_bbs_after';
    &abl_bbs_before if $Fm{'mode'} eq 'abl_bbs_before';

# sub normal action#に
&input('radio','mode','abl_bbs_before','',"勢力伝言板に記入<br>\n");
を追加します。
そのあと、ability_bbs.plを作ったのですが、
「勢力伝言板に記入」をしようとすると、
http://www62.tok2.com/home/voyage/masao/sos.jpg
↑のようになってしまいます(;;
(このときのソースはhttp://www62.tok2.com/home/voyage/masao/sos.txtです)
ability_bbs.plは
# Sub Ability Bbs Before #
sub abl_bbs_before {
@rcdlines = &get_user("$Fm{'id'}");
$fg='CB'; &userout;
push (@msg,'コメントを記入してください');
&form('start'); print qq|<tr><td colspan=2>コメント:|;
&input('text','words',""," size=$def_ts",'');
&OKbuttoninform('n','abl_bbs_after');

print qq|</td></tr>|; &form('end');
}

# Sub Ability bbs After #
sub abl_bbs_after {
&list_order;
@rcdlines = &get_user("$Fm{'id'}");
return if $fg ne 'CB' || $Fm{'words'} eq '';
$words .= "$Fm{'words'}";
&abl_add_bbs("[$id] $nmのコメント:「$Fm{'words'}」");
push (@msg,"アビリティ伝言板にコメントを残しました[$mynm/$nm]");
$fg = ''; &userout;
}
となっています。
おかしいところの見当がつきません。。
どこがおかしいのでしょうか?(;;
長文失礼しました。
スレッド一覧


476● Re:勢力の掲示板[ masaki ] 2003 04/19 17:26
すみません。もう一つ質問です。(;;
コロシアムですが、時間が
投票状態 (締め切り:1970年1月1日 9:0:0)
となっています。
時間の設定はどこでやればいいのでしょうか?(^^;;
スレッド一覧


477● Re[2]:勢力の掲示板[ moon ] 2003 04/19 19:08
> 「勢力伝言板に記入」をしようとすると

というのは、abl_bbs_beforeを実行しようとした時なのかabl_bbs_afterなのかわかりませんが、txt(トクトクではテキストでも広告を挿入するのか・・・)を見ると完全にエラーで処理が中断しているようなのでとりあえず以下をチェックしてみてください。

・ability_bbs.plの文法チェック
・最後に1;を実行しているか
・パスを間違っていないか

> push (@msg,"アビリティ伝言板にコメントを残しました[$mynm/$nm]");

文法エラーでないのなら関係ないですが、この部分は正常に表示されますか?($mynmが)

コロシアムのほうは、投票状態の時間はcolo.datの1行目の2番目のデータなのでそこが空か0になっていないか確認してください。
スレッド一覧


478● Re[3]:勢力の掲示板[ moon ] 2003 04/19 19:36
> コロシアムのほうは、投票状態の時間はcolo.datの1行目の2番目のデータなのでそこが空か0になっていないか確認してください。

補足ですが、変数名は$nextです。
$nextに代入している部分は3箇所しかなく投票状態になるときはその中の2つの可能性があり関係している変数は、
  $prev ・・・ colo.datの1番目
  $mininterval ・・・ 設定値
  $now ・・・ time関数の値
  $minbetperiod ・・・ 設定値
です。

ローカルテストで、参加登録から投票状態になるときに上記の変数を表示させて値が0になっていないか確認してみてください。
スレッド一覧


479● Re[3]:勢力の掲示板[ masaki ] 2003 04/19 19:51
> というのは、abl_bbs_beforeを実行しようとした時なのかabl_bbs_afterなのかわかりませんが、txt(トクトクではテキストでも広告を挿入するのか・・・)を見ると完全にエラーで処理が中断しているようなのでとりあえず以下をチェックしてみてください。
> ・ability_bbs.plの文法チェック
> ・最後に1;を実行しているか
> ・パスを間違っていないか
abl_bbs_beforeを実行しようとしたときです(;;
ability_bbs.plの文法チェックは大丈夫でした(^^;
最後に1;はあります。
パスとはどれでしょうか?(^^;
> > push (@msg,"アビリティ伝言板にコメントを残しました[$mynm/$nm]");
> 文法エラーでないのなら関係ないですが、この部分は正常に表示されますか?($mynmが)
そのメッセージが出るところでバグっています。(;;
> コロシアムのほうは、投票状態の時間はcolo.datの1行目の2番目のデータなのでそこが空か0になっていないか確認してください。
こっちは直りました!(^^
ありがとうございます。
スレッド一覧


480● Re[4]:勢力の掲示板[ moon ] 2003 04/19 20:57
> abl_bbs_beforeを実行しようとしたときです(;;

requireでエラーが出ていないかを確認するために、
if ($Fm{'mode'} eq 'abl_bbs_before') { require 'ability_bbs.pl'; &play_form }
を、
if($Fm{'mode'} eq 'abl_bbs_before'){ # 全角空白を使用しているので注意
  &header;
  print "\n\n\n\n<!-- require before -->\n\n\n\n";
  require 'ability_bbs.pl';
  print "\n\n\n\n<!-- require after -->\n\n\n\n";
  &play_form;
}
として実行しHTMLソースを表示して上記で出力した文字列が書かれているかを確認してみてください。

> パスとはどれでしょうか?(^^;

require 'ability_bbs.pl';としてあるability_bbs.plのパスです。

> > コロシアムのほうは、投票状態の時間はcolo.datの1行目の2番目のデータなのでそこが空か0になっていないか確認してください。
> こっちは直りました!(^^

投票開始になるときにそういう状態になったということはまた起こる可能性があるということなので気を付けてください。
スレッド一覧


481● Re[5]:勢力の掲示板[ masaki ] 2003 04/19 21:31
> > abl_bbs_beforeを実行しようとしたときです(;;
すみません(;;
abl_bbs_afterを実行しようとしたときでした(;;
本当にすみません。
> requireでエラーが出ていないかを確認するために、
> if ($Fm{'mode'} eq 'abl_bbs_before') { require 'ability_bbs.pl'; &play_form }
> を、
> if($Fm{'mode'} eq 'abl_bbs_before'){ # 全角空白を使用しているので注意
>   &header;
>   print "\n\n\n\n<!-- require before -->\n\n\n\n";
>   require 'ability_bbs.pl';
>   print "\n\n\n\n<!-- require after -->\n\n\n\n";
>   &play_form;
> }
> として実行しHTMLソースを表示して上記で出力した文字列が書かれているかを確認してみてください。
<!-- require before -->







<!-- require after -->
と表示されました(^^;;
> require 'ability_bbs.pl';としてあるability_bbs.plのパスです。
う…。。
# ---------- FILE PATH
でしょうか?(^^;;
ここにはability_bbs.plは書いてないような(汗
> 投票開始になるときにそういう状態になったということはまた起こる可能性があるということなので気を付けてください。
わかりました!ありがとうございます!!
スレッド一覧


482● Re[6]:勢力の掲示板[ moon ] 2003 04/19 22:21
> abl_bbs_afterを実行しようとしたときでした(;;

それなら、
  &abl_add_bbs("[$id] $nmのコメント:「$Fm{'words'}」");
  push (@msg,"アビリティ伝言板にコメントを残しました[$mynm/$nm]");
を、
  print "\n\n\nabl_add_bbs before<br>\n\n\n";
  &abl_add_bbs("[$id] $nmのコメント:「$Fm{'words'}」");
  print "\n\n\nabl_add_bbs after<br>\n\n\n";
  push (@msg,"アビリティ伝言板にコメントを残しました[$mynm/$nm]");
  print "\n\n\npush after<br>\n\n\n";
としてabl_add_bbsやpushが実行されているかを確認してみてください。

# わかっていると思いますが、<!-- -->にしたり<br>を付けたりしているのはどうでも良い事なので自分がテストして確認しやすい方法で出力して大丈夫ですよ。
スレッド一覧


483● Re[7]:勢力の掲示板[ masaki ] 2003 04/20 07:32
> それなら、
>   &abl_add_bbs("[$id] $nmのコメント:「$Fm{'words'}」");
>   push (@msg,"アビリティ伝言板にコメントを残しました[$mynm/$nm]");
> を、
>   print "\n\n\nabl_add_bbs before<br>\n\n\n";
>   &abl_add_bbs("[$id] $nmのコメント:「$Fm{'words'}」");
>   print "\n\n\nabl_add_bbs after<br>\n\n\n";
>   push (@msg,"アビリティ伝言板にコメントを残しました[$mynm/$nm]");
>   print "\n\n\npush after<br>\n\n\n";
> としてabl_add_bbsやpushが実行されているかを確認してみてください。
abl_add_bbs beforeまでしか表示されませんでした(;;
スレッド一覧


484● Re[8]:勢力の掲示板[ moon ] 2003 04/20 10:19
> abl_add_bbs beforeまでしか表示されませんでした(;;

いまさらながらsatosiさんのところの改造方法を見てきました。(笑)
で、abl_add_bbsで考えられる原因は、
・abl_add_bbsの綴り間違い
・ファイルを分割している場合に、get_timeが読み込んでいないplファイルにある
・sosiki_nameが存在しない
です。

# &sosiki_name;の前のrequire 'ability.pl';は不要な処理のような気が。
スレッド一覧


485● 補足&訂正[ moon ] 2003 04/20 10:34
> ・sosiki_nameが存在しない

または、その中でエラーが出ている。

> # &sosiki_name;の前のrequire 'ability.pl';は不要な処理のような気が。

これは間違いです。
既に読み込んであるのはability_bbs.plであり、ability.plは読み込んでありませんでしたね。
スレッド一覧


486● Re[9]:勢力の掲示板[ masaki ] 2003 04/20 13:00
> > abl_add_bbs beforeまでしか表示されませんでした(;;
>
> いまさらながらsatosiさんのところの改造方法を見てきました。(笑)
> で、abl_add_bbsで考えられる原因は、
> ・abl_add_bbsの綴り間違い
探してみましたが、これはなさそうです(^^;
> ・ファイルを分割している場合に、get_timeが読み込んでいないplファイルにある
これがよくわからないのですが、sub abl_add_bbsがability_bbs.pl内にあり、そのなかにget_timeがありました(^^;(それしかないです)
> ・sosiki_nameが存在しない
sosiki_nameはability.pl内にありました(^^;
一応今のファイルはとっておいて、もう一度最初からやってみます。
スレッド一覧


487● Re[10]:勢力の掲示板[ moon ] 2003 04/20 14:12
> > ・ファイルを分割している場合に、get_timeが読み込んでいないplファイルにある
> これがよくわからないのですが、sub abl_add_bbsがability_bbs.pl内にあり、そのなかにget_timeがありました(^^;(それしかないです)

呼び出しているところではなくsub get_timeの場所です。
ただ、よく使うサブルーチンなのでsos2.cgi内にあると思うので大丈夫だと思います。

> > ・sosiki_nameが存在しない
> sosiki_nameはability.pl内にありました(^^;
> 一応今のファイルはとっておいて、もう一度最初からやってみます。

わざわざ最初からやらなくてもpushやprintでどこまで実行されているかを確認して修正していけば良いだけだと思うのですが・・・。

何のエラーが出ているかがわからない場合は、
AN HTTPDのPerlの実行ファイルへのパス(c:\perl\bin\perl.exeなどになっているはず)をperlis.dllのパスに変更してCGIを実行し、同フォルダに作成されるPerlIS-Err.logを見るとエラーメッセージが書かれています。
スレッド一覧


488● Re[11]:勢力の掲示板[ masaki ] 2003 04/20 15:27
> わざわざ最初からやらなくてもpushやprintでどこまで実行されているかを確認して修正していけば良いだけだと思うのですが・・・。
最初からやってもだめでした(;;
> 何のエラーが出ているかがわからない場合は、
> AN HTTPDのPerlの実行ファイルへのパス(c:\perl\bin\perl.exeなどになっているはず)をperlis.dllのパスに変更してCGIを実行し、同フォルダに作成されるPerlIS-Err.logを見るとエラーメッセージが書かれています。
Activeperlでも可能でしょうか?(^^;;
スレッド一覧


489● Re[12]:勢力の掲示板[ moon ] 2003 04/20 17:49
> Activeperlでも可能でしょうか?(^^;;

「でも」ではなくてActivePerl「で」やることを前提に書いています。(笑)
スレッド一覧


490● Re[13]:勢力の掲示板[ masaki ] 2003 04/20 19:14
> > Activeperlでも可能でしょうか?(^^;;
>
> 「でも」ではなくてActivePerl「で」やることを前提に書いています。(笑)
やっとできました(;;
5時間以上やってて、結局1;が原因とは…。。(泣
moonさんの仰っていた、1;というのはplファイルなら、どれでも最後に必要なのですね(^^;;
また一つ勉強しましたw
(casino.plを見てて、最後に1;があったので気づきましたσ(^^;)
いろいろいじり過ぎたせいで、新たなバグが(泣
ログインしたときに、右側に表示されるものが全然違うキャラのデータになってしまうのです。
でも、お金とかはログインしたキャラのと同じ。
例えば
プレイヤーA 所持金1000Gでログインすると、プレイヤーBのデータが右側に表示されます。↓
プレイヤーB 所持金2800G
でも、これで2000Gの物を買おうとすると、「お金が足りません」と表示され買えません。1000G(プレイヤーAの所持金)までなら買えます。
探索でも、探索で手に入れたアイテムはBの所持品ではなく、Aの所持品に追加されます。
わかりにくいですが、「見た目だけプレイヤーBになってしまった」という状態です(;;
因みに、IDが一番大きいプレイヤーに変装してしまうようです(;;
スレッド一覧


491● Re[14]:勢力の掲示板[ moon ] 2003 04/20 21:46
> やっとできました(;;
> 5時間以上やってて、結局1;が原因とは…。。(泣
> moonさんの仰っていた、1;というのはplファイルなら、どれでも最後に必要なのですね(^^;;
> また一つ勉強しましたw
> (casino.plを見てて、最後に1;があったので気づきましたσ(^^;)

ここは1;で無くても良いのですが慣例的に1;にするようです。("xyz";のような文字列でも大丈夫)

> いろいろいじり過ぎたせいで、新たなバグが(泣
> ログインしたときに、右側に表示されるものが全然違うキャラのデータになってしまうのです。
> でも、お金とかはログインしたキャラのと同じ。
> 例えば
> プレイヤーA 所持金1000Gでログインすると、プレイヤーBのデータが右側に表示されます。↓
> プレイヤーB 所持金2800G
> でも、これで2000Gの物を買おうとすると、「お金が足りません」と表示され買えません。1000G(プレイヤーAの所持金)までなら買えます。
> 探索でも、探索で手に入れたアイテムはBの所持品ではなく、Aの所持品に追加されます。
> わかりにくいですが、「見た目だけプレイヤーBになってしまった」という状態です(;;
> 因みに、IDが一番大きいプレイヤーに変装してしまうようです(;;

sub normal_actionの、
  foreach $line (@lstlines) {
    ($pid,$pnm,$pps,$pjb,$pig,$psp,$pbp,$others) = split(/<>/,$line);
    if ($Fm{'id'} eq $pid) { $mysp = $psp; $mybp = $pbp }
    else { print qq|<option value="$pid">$pid:$pnm($pjb)\n| }
  }
のあたりかな?
ここで$pidとかではなく$idなどにしているか、逆にplayer_dataのほうで$pidとかを利用しているとか、が考えられます。
どちらにしても他人のIDや名前が意図しないときに表示されているのはパスワードさえ載っている可能性があるのでかなり危険な状態ですね。
スレッド一覧


492● Re:勢力の掲示板[ masaki ] 2003 04/20 22:14
> sub normal_actionの、
>   foreach $line (@lstlines) {
>     ($pid,$pnm,$pps,$pjb,$pig,$psp,$pbp,$others) = split(/<>/,$line);
>     if ($Fm{'id'} eq $pid) { $mysp = $psp; $mybp = $pbp }
>     else { print qq|<option value="$pid">$pid:$pnm($pjb)\n| }
>   }
> のあたりかな?
> ここで$pidとかではなく$idなどにしているか、逆にplayer_dataのほうで$pidとかを利用しているとか、が考えられます。
> どちらにしても他人のIDや名前が意図しないときに表示されているのはパスワードさえ載っている可能性があるのでかなり危険な状態ですね。
直りました(^^
あと、最後の質問ですが(^^;
# Sub Ability bbs #
sub abl_bbs {

$reid = $Fm{'id'};
open(IN,"$usrdir$reid\.cgi") || &error("Can't open logfile");
@lines = <IN>;
close(IN);
$own = ($id,$nm,$ps,$jb,$ig,$sp,$bp,$bn,$ak,$dd,$hp,$xp,$ab,$db,$av,$wn,$lz,$dt,$mn,$bg,$xi,$tm,$lf,$fe,$cm,$is,$ht,$fg,$rw,$kl,$tw) = split(/<>/,$lines[0]);

if($ps ne $Fm{'pass'}){&error("伝言板データ読みこみエラー")}
require 'ability.pl'; &sosiki_name;
if($s_id eq 'S1'){$ab_dat = $s_id;}
if($s_id eq 'S2'){$ab_dat = $s_id;}
if($s_id eq 'S3'){$ab_dat = $s_id;}
if($s_id eq 'S4'){$ab_dat = $s_id;}
if($s_id eq 'S5'){$ab_dat = $s_id;}
if($s_id eq 'S6'){$ab_dat = $s_id;}
if($s_id eq 'S7'){$ab_dat = $s_id;}
if($s_id eq 'S8'){$ab_dat = $s_id;}
if($s_id eq 'S9'){$ab_dat = $s_id;}

@bbslines = &opendat("$ab_dat\.cgi",@bbslines);
&header;
print qq|<center><b>[アビィティ《 $sst 》の伝言板]</b></center><hr>\n|;
foreach $line (@bbslines) { print qq|$line<br><hr>\n| }
}
↑でCan't open logfileというエラーが出る場合は、どのような場合でしょうか?(^^;;
スレッド一覧


493● Re[2]:勢力の掲示板[ moon ] 2003 04/20 22:33
> 直りました(^^

何が問題だったかを書いてもらえるとすっきりするのですが・・・。

> ↑でCan't open logfileというエラーが出る場合は、どのような場合でしょうか?(^^;;

> $reid = $Fm{'id'};
> open(IN,"$usrdir$reid\.cgi") || &error("Can't open logfile");
とあるので、ユーザファイルが.cgiではなくデフォルトの.datのままとかなのでは?
スレッド一覧


494● Re[3]:勢力の掲示板[ masaki ] 2003 04/21 06:28
> 何が問題だったかを書いてもらえるとすっきりするのですが・・・。
よくわかりませんが、不用なものを削除していったら直りました(^^;↓
if($nm eq $e1hero||$nm eq $e2hero||$nm eq $e3hero||$nm eq $e4hero||$nm eq $e5hero||$nm eq $e6hero||$nm eq $e7hero||$nm eq $e8hero||$nm eq $e9hero){
$mn -=0;}else{$mn -=30;}

if($mynm eq $e1hero||$mynm eq $e2hero||$mynm eq $e3hero||$mynm eq $e4hero||$mynm eq $e5hero||$mynm eq $e6hero||$mynm eq $e7hero||$mynm eq $e8hero||$mynm eq $e9hero){
&input('radio','mode','abl_bbs_before','',"<font color=blue>アビリティ伝言板に記入</font><br>\n");}
else{&input('radio','mode','abl_bbs_before','',"アビリティ伝言板に記入 書込み料 30G/回<br>\n");}
}

&input('radio','mode','abl_bbs_before','',"<font color=blue>アビリティ伝言板に記入</font><br>\n");
にしたくらいですが(^^;
$mynmがどこでも代入されてなかったので(笑
> > ↑でCan't open logfileというエラーが出る場合は、どのような場合でしょうか?(^^;;
>
> > $reid = $Fm{'id'};
> > open(IN,"$usrdir$reid\.cgi") || &error("Can't open logfile");
> とあるので、ユーザファイルが.cgiではなくデフォルトの.datのままとかなのでは?
ユーザーファイルを.cgiにするのですか(^^;;
.datのままやる方法はないでしょうか??(^^;
スレッド一覧


495● Re[4]:勢力の掲示板[ moon ] 2003 04/21 09:08
> > 何が問題だったかを書いてもらえるとすっきりするのですが・・・。
> よくわかりませんが、不用なものを削除していったら直りました(^

ありがとうございます。

> ユーザーファイルを.cgiにするのですか(^^;;
> .datのままやる方法はないでしょうか??(^^;

ただ、open(IN,"$usrdir$reid\.cgi") || &error("Can't open logfile");のcgiをdatに変更するだけです。
スレッド一覧


496● Re[5]:勢力の掲示板[ masaki ] 2003 04/21 19:38
> > > 何が問題だったかを書いてもらえるとすっきりするのですが・・・。
> > よくわかりませんが、不用なものを削除していったら直りました(^
>
> ありがとうございます。
いえ。
教えていただいたのですから(^^;;
> > ユーザーファイルを.cgiにするのですか(^^;;
> > .datのままやる方法はないでしょうか??(^^;
>
> ただ、open(IN,"$usrdir$reid\.cgi") || &error("Can't open logfile");のcgiをdatに変更するだけです。
できました(^^
ありがとうございます!!
これからもよろしくお願いします!
スレッド一覧

CGIROOM