▼スレッド
│
└◇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
お久しぶりです(^^スレッド一覧
また初歩的なミスがあるかもしれませんが、どうしても出来ないので質問させていただきます。
「勢力別掲示板」(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;
}
となっています。
おかしいところの見当がつきません。。
どこがおかしいのでしょうか?(;;
長文失礼しました。
すみません。もう一つ質問です。(;;スレッド一覧
コロシアムですが、時間が
投票状態 (締め切り:1970年1月1日 9:0:0)
となっています。
時間の設定はどこでやればいいのでしょうか?(^^;;
> 「勢力伝言板に記入」をしようとするとスレッド一覧
というのは、abl_bbs_beforeを実行しようとした時なのかabl_bbs_afterなのかわかりませんが、txt(トクトクではテキストでも広告を挿入するのか・・・)を見ると完全にエラーで処理が中断しているようなのでとりあえず以下をチェックしてみてください。
・ability_bbs.plの文法チェック
・最後に1;を実行しているか
・パスを間違っていないか
> push (@msg,"アビリティ伝言板にコメントを残しました[$mynm/$nm]");
文法エラーでないのなら関係ないですが、この部分は正常に表示されますか?($mynmが)
コロシアムのほうは、投票状態の時間はcolo.datの1行目の2番目のデータなのでそこが空か0になっていないか確認してください。
> コロシアムのほうは、投票状態の時間はcolo.datの1行目の2番目のデータなのでそこが空か0になっていないか確認してください。スレッド一覧
補足ですが、変数名は$nextです。
$nextに代入している部分は3箇所しかなく投票状態になるときはその中の2つの可能性があり関係している変数は、
$prev ・・・ colo.datの1番目
$mininterval ・・・ 設定値
$now ・・・ time関数の値
$minbetperiod ・・・ 設定値
です。
ローカルテストで、参加登録から投票状態になるときに上記の変数を表示させて値が0になっていないか確認してみてください。
> というのは、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になっていないか確認してください。
こっちは直りました!(^^
ありがとうございます。
> 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になっていないか確認してください。
> こっちは直りました!(^^
投票開始になるときにそういう状態になったということはまた起こる可能性があるということなので気を付けてください。
> > 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は書いてないような(汗
> 投票開始になるときにそういう状態になったということはまた起こる可能性があるということなので気を付けてください。
わかりました!ありがとうございます!!
> 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>を付けたりしているのはどうでも良い事なので自分がテストして確認しやすい方法で出力して大丈夫ですよ。
> それなら、スレッド一覧
> &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までしか表示されませんでした(;;
> abl_add_bbs beforeまでしか表示されませんでした(;;スレッド一覧
いまさらながらsatosiさんのところの改造方法を見てきました。(笑)
で、abl_add_bbsで考えられる原因は、
・abl_add_bbsの綴り間違い
・ファイルを分割している場合に、get_timeが読み込んでいないplファイルにある
・sosiki_nameが存在しない
です。
# &sosiki_name;の前のrequire 'ability.pl';は不要な処理のような気が。
> ・sosiki_nameが存在しないスレッド一覧
または、その中でエラーが出ている。
> # &sosiki_name;の前のrequire 'ability.pl';は不要な処理のような気が。
これは間違いです。
既に読み込んであるのはability_bbs.plであり、ability.plは読み込んでありませんでしたね。
> > 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内にありました(^^;
一応今のファイルはとっておいて、もう一度最初からやってみます。
> > ・ファイルを分割している場合に、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を見るとエラーメッセージが書かれています。
> わざわざ最初からやらなくてもpushやprintでどこまで実行されているかを確認して修正していけば良いだけだと思うのですが・・・。スレッド一覧
最初からやってもだめでした(;;
> 何のエラーが出ているかがわからない場合は、
> AN HTTPDのPerlの実行ファイルへのパス(c:\perl\bin\perl.exeなどになっているはず)をperlis.dllのパスに変更してCGIを実行し、同フォルダに作成されるPerlIS-Err.logを見るとエラーメッセージが書かれています。
Activeperlでも可能でしょうか?(^^;;
> Activeperlでも可能でしょうか?(^^;;スレッド一覧
「でも」ではなくてActivePerl「で」やることを前提に書いています。(笑)
> > Activeperlでも可能でしょうか?(^^;;スレッド一覧
>
> 「でも」ではなくてActivePerl「で」やることを前提に書いています。(笑)
やっとできました(;;
5時間以上やってて、結局1;が原因とは…。。(泣
moonさんの仰っていた、1;というのはplファイルなら、どれでも最後に必要なのですね(^^;;
また一つ勉強しましたw
(casino.plを見てて、最後に1;があったので気づきましたσ(^^;)
いろいろいじり過ぎたせいで、新たなバグが(泣
ログインしたときに、右側に表示されるものが全然違うキャラのデータになってしまうのです。
でも、お金とかはログインしたキャラのと同じ。
例えば
プレイヤーA 所持金1000Gでログインすると、プレイヤーBのデータが右側に表示されます。↓
プレイヤーB 所持金2800G
でも、これで2000Gの物を買おうとすると、「お金が足りません」と表示され買えません。1000G(プレイヤーAの所持金)までなら買えます。
探索でも、探索で手に入れたアイテムはBの所持品ではなく、Aの所持品に追加されます。
わかりにくいですが、「見た目だけプレイヤーBになってしまった」という状態です(;;
因みに、IDが一番大きいプレイヤーに変装してしまうようです(;;
> やっとできました(;;スレッド一覧
> 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や名前が意図しないときに表示されているのはパスワードさえ載っている可能性があるのでかなり危険な状態ですね。
> 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というエラーが出る場合は、どのような場合でしょうか?(^^;;
> 直りました(^^スレッド一覧
何が問題だったかを書いてもらえるとすっきりするのですが・・・。
> ↑でCan't open logfileというエラーが出る場合は、どのような場合でしょうか?(^^;;
> $reid = $Fm{'id'};
> open(IN,"$usrdir$reid\.cgi") || &error("Can't open logfile");
とあるので、ユーザファイルが.cgiではなくデフォルトの.datのままとかなのでは?
> 何が問題だったかを書いてもらえるとすっきりするのですが・・・。スレッド一覧
よくわかりませんが、不用なものを削除していったら直りました(^^;↓
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のままやる方法はないでしょうか??(^^;
> > 何が問題だったかを書いてもらえるとすっきりするのですが・・・。スレッド一覧
> よくわかりませんが、不用なものを削除していったら直りました(^
ありがとうございます。
> ユーザーファイルを.cgiにするのですか(^^;;
> .datのままやる方法はないでしょうか??(^^;
ただ、open(IN,"$usrdir$reid\.cgi") || &error("Can't open logfile");のcgiをdatに変更するだけです。
> > > 何が問題だったかを書いてもらえるとすっきりするのですが・・・。スレッド一覧
> > よくわかりませんが、不用なものを削除していったら直りました(^
>
> ありがとうございます。
いえ。
教えていただいたのですから(^^;;
> > ユーザーファイルを.cgiにするのですか(^^;;
> > .datのままやる方法はないでしょうか??(^^;
>
> ただ、open(IN,"$usrdir$reid\.cgi") || &error("Can't open logfile");のcgiをdatに変更するだけです。
できました(^^
ありがとうございます!!
これからもよろしくお願いします!