• ベストアンサー

HTMLのファイルにCGI処理結果を表示する

まずトップページはhtmlで作ります。 そのトップページにいつも変化する所があるのでcgiで処理を施したものをhtmlに貼り付けたいと思っています。 その場合に例えば画像を出力させる場合は <IMG src="cgi-local/top.cgi"> で指定し、 #!/usr/local/bin/perl print "Content-type: image/jpeg\n\n"; open FH,"<../image.jpg"; binmode FH; binmode STDOUT; print while(<FH>); close FH; をやれば動かせますが、これを画像ではなくhtmlを表示させるためには print "Content-type: image/jpeg\n\n"; を print "Content-type: text/html\n\n"; に変更する事により可能だと思いやってみたのですが、うまく出力できませんでした。 cgi処理をうまくhtmlに貼り付ける方法があるのでしょうか。どうか教えて頂けないでしょうか?お願します。(涙)

質問者が選んだベストアンサー

  • ベストアンサー
  • ika3
  • ベストアンサー率64% (29/45)
回答No.2

<IFRAME src="*******.cgi" frameborder="0" scrolling="NO" width="" height="" ></IFRAME> ↑表示させたい場所に挿入すれば、 HTMLを出力するCGIでしたらこの中に表示されます。 ブラウザによっては見えない???かも..。

aeic
質問者

お礼

ありがとうございます。 早速試した所すぐにできました。 MSNのサイトなどはトップページで最新情報の処理をするのに同じような処理をおこなっているのでしょうか http://www.msn.co.jp/home.htm 又違う方法も考えられるのでしょうか ika3さんの方式だと表示の仕方がなかなか難しく感じられるのですが何か工夫が必要なのでしょうか いろいろとご面倒かけて申し訳ないです。 お時間などがありましたらどうか教えて下さい(ごめんなさい)

その他の回答 (4)

  • leiqunni
  • ベストアンサー率27% (8/29)
回答No.5

では、お使いのサーバが「CGIは決められたディレクトリでないと実行できない」 という設定になっているのだと思います、残念ながら。 あとは「SSIを使う」という手もありますが、こちらの方が禁止されている 可能性が高いです。ちなみにSSIとは、 <html> <body> <!--#exec cmd="date"--> <body> <html> と書いたときに、unixのコマンドであるdateが実行されて、 その標準出力がその行に埋め込まれる機能です。 参照URLのサイトでは、index.cgiを使っていて http://atashi.net/ でも http://atashi.net/index.cgi のどちらでも見ることができます。

参考URL:
http://atashi.net/
  • leiqunni
  • ベストアンサー率27% (8/29)
回答No.4

えー、トップページ自体をCGIにしてしまう方法があります。 #!/usr/local/bin/perl $str = '初恋のきた道はとっても泣ける'; print 'Content-type: text/html\n\n'; print <<"_EOT_"; <html> <body> $str </body> </html> _EOT_ このようなCGIを index.cgi として、 実行ビットを立てて見てみてください。 たとえば http://www.hoge.org/index.cgi でも、 http://www.hoge.org/ のアドレスでもアクセスできます。 ただ、サーバの設定によってはできないこともあります。

aeic
質問者

お礼

このようなCGIを index.cgi として、 実行ビットを立てて見てみてください。 解答して頂本当にありがとうございます。 上記の内容ですが、index.cgiをcgi-localの中に入れる事によって出来るものなのでしょうか?実際に始めの所にindex.cgiをアップさせましたが表示する事は出来ませんでした。又cgi-localの所では試していないのでやってみたいと思います。

  • ika3
  • ベストアンサー率64% (29/45)
回答No.3

> MSNのサイトなどはトップページで最新情報の処理をするのに同じような処理をおこなっているのでしょうか MSNのトップページのバナー広告の部分に使われていますね。 <IFRAME>はバナー広告を表示する時に良く使われているように思います。 > 表示の仕方がなかなか難しく感じられるのですが何か工夫が必要なのでしょうか ブラウザでフォントサイズを変更されますとバランスが崩れてしましますが、 スタイルシートでフォントサイズをしてやれば大丈夫だと思います。 問題は、フレームに対応していないブラウザでは全く効き目がないということですが、これについては特に対応しておりません。 いい加減な回答で申し訳ありません。

aeic
質問者

お礼

いろいろと教えて頂きありがとうございます。 >MSNのトップページのバナー広告の部分に使われていますね。 という事ですが一面のニュースの所はそうすると手作りで毎日更新しているのでしょうか。 又、いろいろ調べたのですが、cgiを使う個所としてカテゴリ別に別けた項目の後ろがわしに登録件数が表示されているサイトを見かけますが、そのURLを拝見するとco.jpの表記が見られないようです。これも何かcgiを使うためのテクニックとしてあるのではないかと踏んでいるのですが、どうなんでしょうか? お忙しい所申し訳ないです。

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

ほかによいやり方があるのかもしれませんが、私は以下のように対応しました。 html読み込んであるキーワードを置き換えるように出力する CGIを作って対応しました(邪道?)。 print "Content-type: text/html\n"; print "\n"; open (IN, $basehtml); while(<IN>) {  if ($_ =~ /<!--EXCHANGE-->/) {   置き換えたいソース  } elsif {   print $_;  } } close (IN);