アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在Perlをつかって掲示板(bbs.cgiとします)を作っています.
別ページ(top.cgi)からボタンを押すと掲示板に飛ぶようになっているのですが,
top.cgiでボタンを押したときにbbs.cgiへ任意の値を渡すようにしています.

top.cgiの中で
<form method="POST" action="bbs.cgi">
<input type="hidden" name="to" value="1">
<input type="submit" value="1">
</form>

とし

bbs.cgiの中で
use CGI;
my $form=new CGI;
my $to = $form->param('to');

としているのですが,
このように書いたとき,値は渡すことができますが,
掲示板に書き込みをすると反映されません.
ほかに値を渡す方法はありますか?
ちなみにGETは今回使いません.
それとも掲示板のプログラム自体がおかしいのでしょうか?

かなり考えたのですがわからなかったので質問させていただきます.
よろしくお願い致します.

A 回答 (2件)

仕様の確認をさせてください。



top.cgiを表示させると、bbs.cgiへページ遷移するボタンがある。
ボタンを押すと、POSTでto=1が送られる。
それはbbs.cgiで受け取ることができる。

で、問題は掲示板に書き込みをすると反映されないとのことですが、
・反映されないのは、上記top.cgiから遷移したときのtoの値
・書き込みはbbs.cgiで行っている
ということでしょうか?

「掲示板に書き込みをすると反映されない」の反映されない値と書き込みをどこでどう行っているのかという部分が質問からはわかりません。


とりあえず以下のようによみとりました。
1.top.cgiからbbs.cgiへ画面遷移する
2.上記画面遷移の際に任意の変数を送信する
3.bbs.cgiに画面遷移すると普通の掲示板
4.bbs.cgiで掲示板に書き込みをしたときに2の値も書き込みたい

もしこういうことであるなら、2で受け取った値をどう保管していますか?
bbs.cgiを表示したときに初めて受け取るとして、bbs.cgiの中で画面遷移がある場合、その画面遷移で毎回値を送信するようにするなり、クッキーにセットして毎回送ってもらうなりしないと。

top.cgi →1→ bbs.cgi →2→ bbs.cgi →3→ bbs.cgi
こんな感じで画面遷移していくとして、
1ではbbs.cgiのデフォルト画面の表示、
2では特定のレスの表示、
3では2のレスへの返信を送信
とした場合、明示的に2および3でも1で送った値を送るようにしなければ、1で送った値は1が終わったところでなくなりますよ
    • good
    • 0
この回答へのお礼

さっそくのお返事ありがとうございます.
少し言い方が伝わりにくかったですね.すみません.

値をbbs.cgiに渡すことはできています.
私がここで言いたかった「掲示板が反映しない」というのは,
掲示板自体に書き込みができないということです.

値を渡さなければ掲示板はきちんと動くことは確認できていますが,
値を渡すとコメントを書いて投稿しても新しいコメントとして残らないんです.
なので掲示板と値を渡す(受け取る)cgiって一緒に使えないのかな,と思って質問させていただきました.

こんなんで伝わるでしょうか…?

お礼日時:2006/05/27 00:33

んーやっぱりまだよくわかりません(苦笑



掲示板へ反映されないとのことですが、
掲示板への投稿フォームからPOSTで送信して、
それを掲示板のスクリプトで受け取り、
ログファイルに書き込むわけですよね。

ログファイルにきちんと書き出していれば反映されるとおもいますが。

やりたいことを順を追って箇条書きとかで書いてみてもらえるとわかりやすいかもしれません。

たとえば、
1.topからbbsを表示させる(このとき特定の値をbbsに送信する)
2.1で送られた値を受け取り、それを元に掲示板を表示させる
3.2で表示された掲示板のフォームに書き込んで、POSTで投稿する(受け取るのはbbs.cgi)
4.3で送信された値をbbs.cgiが受け取り、ログファイルに書き出す。
5.ログファイルからデータを読み込み表示する
のような感じですね。
こうやって、何がどの動作でどうできていないのかを考えてみるとよいかとおもいます。

bbs.cgiでは、
・送信されたデータを受け取り、それをログに書き出す機能(関数)
・ログファイルからデータを読み取り、それを表示させる機能(関数)
が仮にあるとして、
前者ができていないのか、後者ができていないのか。


補足にも、
bbs.cgiで値をうけとり、変数に格納はできる。
しかし、それを反映させて表示ができない。
としか書かれていません。
実際の処理としては、変数に格納した後に、その値をログファイルなどに保存する工程があるはずです。
(でないと、受け取ったときに呼び出されたCGIが終了すると変数に格納した値が消えてしまいますからね)

ログファイルにはちゃんと保存できているのでしょうか?
    • good
    • 0
この回答へのお礼

すみません、わかりにくかったですね。
送信された値はbbs.cgiのHTMLで表示させるだけなので
ログには書き込みません。
私が言いたかったのは値を渡すプログラムを書くことによって
掲示板が機能を果たさなくなるということです。

でも本を読みあさってなんとか解決することができました。
アドバイスありがとうございました。

お礼日時:2006/05/28 18:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!