▼スレッド
│
└◇820:複数アイテムファイルをufs2.cgiで編集 [ストロベリージャム] 10/13 21:58
└◇821:Re:複数アイテムファイルをufs2.cgiで編集 [moon] 10/14 08:51
└◇822:Re[2]:複数アイテムファイルをufs2.cgiで編集 [moon] 10/14 09:10
└◇823:Re[3]:複数アイテムファイルをufs2.cgiで編集 [ストロベリージャム] 10/14 10:42<-last
お久しぶりです。風の旅人(?)ストロベリージャムです。スレッド一覧
本家の方で質問があった複数アイテムファイルを〜ですが最近自作の街移動システムを導入した為月様のを参考に簡単な物を自作してみたのですが# Sub Adding Item #で上手くファイルを開く事が出来ないのです。。改造したとこは
# Sub Admin #のアイテム補充を以下のように修正
print qq|<input type=radio name=mode value=add_item>アイテム補充 <select name=item>\n|;
print qq|<option value="1itm.dat">1itm.dat</option>\n|;
print qq|<option value="2itm.dat">2itm.dat</option>\n|;
print qq|</select><br>\n|;
# Sub Add Item # # Sub Adding Item #を以下の様に変更しました。
# Sub Add Item #
sub add_item {
if ($Fm{'pass'} ne $pass) { &error('パスワードが違います') }
@bitlines = &opendat($bitdat);
@itmlines = &opendat($Fm{'item'});
&table_top("アイテムの補充$add",'1');
print qq|プレイ用アイテム一覧:<br><textarea rows=15 cols=50 name=bg>\n|;
foreach $item (@itmlines) {
print qq|$item|;
}
print qq|</textarea><br>\n|;
print qq|ストックアイテム一覧:<br><textarea rows=15 cols=50>\n|;
foreach $item (@bitlines) {
print qq|$item|;
}
print qq|</textarea><br>\n|;
&table_bottom('adding_item');
}
# Sub Adding Item #
sub adding_item {
if ($Fm{'pass'} ne $pass) { &error('パスワードが違います') }
@itmlines = &opendat($Fm{'item'});
$bg = $Fm{'bg'};
$bg =~ s/</</g;
$bg =~ s/>/>/g;
@bag = split(/<br>/,$bg);
foreach $item (@bag) {
if ($item) { push (@items,"$item\n") }
}
&writedat($Fm{'item'},@items);
$add = "<br><br>アイテムの補充を行いました";
&add_item;
}
# Sub Add Item #では選択したファイルを開けるのですが、アイテムを編集し# Sub Adding Item #に飛ぶとCan't Openと出てしまいます。開けないファイル名が出ないので$Fm{'item'}の変数受け渡しが出来ていないのかな?と思ったのですがどうにもこうにも上手くいかなくて。。。
レティシア様にも同じ質問をしたのですが月様なら原因がわかるかな?と思い質問させて頂きました。
もしお時間がありましたらご教授お願い致します。
> # Sub Add Item #では選択したファイルを開けるのですが、アイテムを編集し# Sub Adding Item #に飛ぶとCan't Openと出てしまいます。開けないファイル名が出ないので$Fm{'item'}の変数受け渡しが出来ていないのかな?と思ったのですがどうにもこうにも上手くいかなくて。。。スレッド一覧
そのようですね。
sub add_itemの&table_topと&table_bottomの間に、
print qq|<input type=hidden name=item value="$Fm{'item'}">|;
を追加すれば良いような気がします。
あと、セキュリティ的にsub add_itemとsub adding_item双方の@itmlines = &opendat($Fm{'item'});以前に、
&error('無効なファイルです。') if($Fm{'item'} !~ /^\ditm\.dat$/);
のような感じの判定を付けておいたほうが良いだろうと思います。(条件はアイテムファイルのパスにより異なります。)
> あと、セキュリティ的にsub add_itemとsub adding_item双方の@itmlines = &opendat($Fm{'item'});以前に、スレッド一覧
何気に本家BBSに書いたほうでも似たような処理が必要です。
あちらを無駄に上げるのも嫌なのでここで修正を書きます。(普通は気にする必要がない事柄ですし。)
> を、そしてsub add_itemとsub adding_item双方の@itmlines = &opendat($itmdat);以前に、
> $itmdat = "./item/itm_$Fm{'itmopt'}.dat";
> を追加します。
さらに$itmdat・・・以前に、
&error('無効なファイルです。') if($Fm{'itmopt'} !~ /^[a-z]$/);
を追加。
ありがとうございます。無事出来ました m( _ _ )mスレッド一覧
またお世話になるかもしれませんが今後ともヨロシクお願いします(^0^