• 締切済み

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

みんなの回答

  • abayama
  • ベストアンサー率48% (38/79)
回答No.2

#1です。標準出力ではなくてファイルに出力したら、どういう結果になりますか?

egypt
質問者

補足

再度のご回答ありがとうございます。 ファイルに出力したら変数が展開されたものが出力されました。 その後、cgiではなく、普通のhdmlのファイルで同様に記載してもエラーがでたので、cgi云々の話ではなく、そもそもhdmlの規則に違反した記載をしていると思われます。

  • abayama
  • ベストアンサー率48% (38/79)
回答No.1

このソースでは、EOTの行までがまるまるコピーされてしまうので、うまくいかないのだと思います。 処理した変数の入っている行の前にEOTの行を移動させ、問題の行を print "<action type=accept task=gosub dest=*1.cgi label=進む method=post postdata=s1=$s1&s2=$s2>\n"; のように出力すれば、変数の値が置換されるはずです。

egypt
質問者

お礼

ご回答ありがとうございます。 やってみましたが、うまくいきませんでした。 ちなみにうまくいかないとはhdmlのファイル#2自体が表示されません。下記を消せば表示されるので、この部分がおかしいとは思うのですが・・・ <action type=accept task=gosub dest=*1.cgi label=進む method=post postdata=s1=$s1&s2=$s2>

関連するQ&A