- 締切済み
cgiの変数をhdmlに渡すことはできますか?
hdmlコンテンツを作成しているのですが、hdmlのファイル#1からgosubでcgiのファイル*1に行き、printをつかってhdmlのファイル#2を表示しています。そのファイル#2にcgiのファイル*1で処理した変数を渡し、再びcgiのファイル*1に行きたいのですが、うまく行きません。 このような処理は不可能でしょうか? 下記のソースの$s1,$s2の部分が処理した変数になります。 print "Content-type:text/x-hdml;charset=Shift_JIS\n\n"; print <<"EOT"; <HDML VERSION="3.0" PUBLIC="TRUE"> <display name="test"> 進む <action type=accept task=gosub dest=*1.cgi label=進む method=post postdata=s1=$s1&s2=$s2> </display> </HDML> EOT
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- abayama
- ベストアンサー率48% (38/79)
#1です。標準出力ではなくてファイルに出力したら、どういう結果になりますか?
- abayama
- ベストアンサー率48% (38/79)
このソースでは、EOTの行までがまるまるコピーされてしまうので、うまくいかないのだと思います。 処理した変数の入っている行の前にEOTの行を移動させ、問題の行を print "<action type=accept task=gosub dest=*1.cgi label=進む method=post postdata=s1=$s1&s2=$s2>\n"; のように出力すれば、変数の値が置換されるはずです。
お礼
ご回答ありがとうございます。 やってみましたが、うまくいきませんでした。 ちなみにうまくいかないとはhdmlのファイル#2自体が表示されません。下記を消せば表示されるので、この部分がおかしいとは思うのですが・・・ <action type=accept task=gosub dest=*1.cgi label=進む method=post postdata=s1=$s1&s2=$s2>
補足
再度のご回答ありがとうございます。 ファイルに出力したら変数が展開されたものが出力されました。 その後、cgiではなく、普通のhdmlのファイルで同様に記載してもエラーがでたので、cgi云々の話ではなく、そもそもhdmlの規則に違反した記載をしていると思われます。