• ベストアンサー

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に貼り付ける方法があるのでしょうか。どうか教えて頂けないでしょうか?お願します。(涙)

  • aeic
  • お礼率10% (60/582)
  • CGI
  • 回答数5
  • ありがとう数3

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

  • ベストアンサー
  • 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);

関連するQ&A

  • 普通の html に cgi を使って画像を・・

    ソースお手本表を見ながら質問タイトルのようなことをやりたいと思いました。 結果はHTMLを実行すると通信が1分から3分ぐらい通信を行い、最後には画像を表示しないようなります。 どこがおかしいのかおしえていただけないでしょうか? どうかお願いします。 ------------------------------------------------ #!/usr/local/bin/perl #use DBI; print "Content-type: image/jpeg\n\n"; open FH,"<image.jpg"; binmode FH; binmode STDOUT; print while(FH); close FH; ------------------------------------------------

    • 締切済み
    • CGI
  • cgiで表示するhtmlページ内でバイナリ画像を出力したい

    cgiで表示するhtmlページ内でバイナリ画像を出力したい 「CGI 画像出力」でググったページで下記のコードがありました。 下記コードは、 Content-typeをimage/gif等にして バイナリを print すれば表示される という書き方になっていると思いますが、 content-typeがtext/html のページ内でバイナリをprintした場合 バイナリが文字列としてグシャァァァと表示されてしまいます。 ------- $view = 'aaa.jpg'; print "Content-type: image/jpeg\n\n"; #コンテンツタイプを指定する open IMGG,"$view"; #ファイルハンドル IMGGに画像ファイルを読み込む binmode (IMGG); #画像なのでバイナリモードに設定する print <IMGG>; #ファイルハンドルを画面に書き出す close (IMGG); #ファイルハンドルを閉じる exit; ------- content-typeがtext/htmlの状態でバイナリの画像を表示するには どうすればよいのでしょうか? cgiを2つ用意して、上記のコードを img src=~~.cgi という形で 呼び出すしかないのでしょうか?

    • ベストアンサー
    • Perl
  • CGI経由でのPDFファイルをダウンロード

    こんにちは。 CGIの初心者です。 今CGI経由でのPDFファイルをダウンロードするというプログラムを作っています。 ただ、ダウンロードしたファイルは開けなく、エラーが出ます。ファイルを確認すると0バイトです。原因はよく分からないので、誰かが教えてください。ありがとうございます。 コードです: $filename = './data/sheet.pdf'; $source = $filename ; print qq|Content-type: text/plain\n|; print qq|Content-Disposition: attachment; filename="$filename"\n|; print qq|\n|; #-- ファイルを読み込んで出力 open(FILE,"$source"); binmode FILE; binmode STDOUT; while(read(FILE, $value, 4096)){ print $value; } close FILE;

    • 締切済み
    • CGI
  • 圧縮ファイルの取得

    http://okwave.jp/qa/q8823112.html こちらで質問させていただいたように、/public_html/file.zipではなく、/file.zipの ファイルをダウンロードさせるために以下の方法を取りました。 print "Content-type: application/x-tar\n\n"; open( FH, "$filename" ); binmode FH; binmode STDOUT; print <FH>; close( FH ); この方法では、ブラウザで表示させてダウンロードできるようになったのですが、 これをperlで、wgetか、何かを使って取得したいと考えています。 ところが、wgetで試したところ、zipファイルではなく、cgiページ自体のソースの取得になってしまいました。 zipファイルを取得するにはどのようにしたらよいのでしょうか。 perlの知識があまりないので、どうしても解決できません。 宜しければ具体的に書き方を教えていただけると大変助かります。どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • perlで動画を表示させたい

    perlで動画を表示させたいのですがうまくいきません。 print "Content-type: video/mpeg\n\n"; open FH,"foo.mpg"; binmode FH; binmode STDOUT; while (<FH>) { print STDOUT; } close FH; exit; MIMEのタイプがちがうのですか? サーバーに設定されているMIMEタイプです。 video/mpeg mpeg mpg mpe video/quicktime qt mov video/x-msvideo avi video/x-sgi-movie movie

    • ベストアンサー
    • CGI
  • CGIへ飛ばずに処理だけさせたい

    HTMLのフォームからsubmitしてcgiにアクセスする。 cgiでHTMLからのポストとゲットを読み込んで ログファイルに書き込む。 というCGIを作ったんだけど、 print "Content-type: text/html\n\n"; を書かないと、submitしてからcgiの処理が 止まらないみたいでした。 print "Content-type: text/html\n\n"; を書くと、処理は正常になるけど、cgiファイルに ジャンプしてしまいます。 openで書き込みをする場合、cgiに飛ばずに 処理する方法を教えてください。

    • ベストアンサー
    • CGI
  • perlで画像表示

    htmlファイルから<img src="./aa.cgi">と書いて連続した画像を表示させたいのですが @aa =(1,2,3); foreach(@aa){ open(IMG, "./$_.gif"); binmode(IMG); binmode(STDOUT); print "Content-type: image/gif\n\n"; read(IMG, $img, 1024); print $img; close(IMG); } こう書いたらだめなのでしょうか?

    • ベストアンサー
    • Perl
  • HTMLからCGIへデータを引き継ぎ

    HTMLでメールフォームを作りCGI(Perl)で次のプログラムを作りました。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "$mail\n"; print "$namae\n"; print "$naiyou\n"; 動作確認のためプログラムは少しにしました。何も表示されません。

    • ベストアンサー
    • Perl
  • バイナリファイルの出力

    「test.dat」というファイルをブラウザから ダウロードさせるためにバイナリ出力をしたいのですが、 空ファイルばかりできて上手くいきません。 以下のようなコードなのですが、どこが悪いでしょうか? ご教授ください。お願いします。 症状:ブラウザからダウンロードすると、ファイル名は正しいが 空のファイルになっている 環境:perl 5.8.7 windows server2003 ----------------------------------------------------------- #!/usr/local/bin/perl print "Content-Disposition: attachment; filename=\"test.dat\"\n"; print "Content-Type: application/octet-stream\n\n"; open(IN, "test.dat"); binmode(IN); binmode(STDOUT); print while (<IN>); close(IN); -----------------------------------------------------------

    • ベストアンサー
    • Perl
  • CGIスクリプトの結果が表示しない

    windows2000 proffesinal sp.4でActivePerl5.8.8..819・・・・、Apache2.054の環境で"10日で覚えるPerlCGI"を使用。IEバージョンは5でページを「表示できません」のエラーがときたまでる。 上記環境でApacheは正常に動作。TeraPad使用。CGIスクリプト1-2.cgiとして作成。 #! C:/perl/bin/perl # CGIヘッダーの出力 print "Content-type: text/html\n\n"; print "<DOCTYPE HTML PUBLIC \n-//W3C//DTD HTML4.01//EN\">\n"; print "<html>\n"; print "<head><title>Hello HTML</title></head>\n";# htmlの出力 print "<body><p>こんにちわ。これはHTML文書の例です。</p></body>\n"; print "</html>\n"; 上記スクリプトを1-2.cgiとしてApaghe2-htdocs-tendaysに保存 IEのURLに:: http://127.0.0.1/tendays/1-2.cgiと入力・・・そして下記の表示が出ました。 #! C:/perl/bin/perl# CGIヘッダーの出力print "Content-type: text/html\n\n";# htmlの出力print "\n"print こんにちわ。これはHTML文書の例です。 \n";print" "; 原因を教えてください。windows7 64bit でもこのようにスクリプトだけが表示されたことがあり(perl,Apacheのバージョンも最近のものを使用)その時は、相談室にお世話になりながら自分の 未熟さにあきれお尋ねしなかったのですが、最後HTML5を習えばのお答えで、今。参考書を買って人通り見たのですが、フォームメールや掲示板はやはり裏でCGIが動作しているので。また古いパソコンで始めたのでしたが最初からつまずきました。doreamweaber もあるのですが、能力がないのに 人様の作成したフりーソフトをスクリプトの意味が分からず貼り付けるのはいささか情けないかなと 考えています。最終的にはそうなると思っていますが、できればsendmailを使用したCGIスクリプトとかんがえています,が。とりあえず一歩一歩づつと思っています。10年以上前に作成したホームページをアップしっぱなしです。メールが送信できません。当時のプロバイダーがocnでその時提供されたもので裏でCGIが動いているなんて知りませんでした。今biglobeです。 自分の作りかけのホームページのURLは http://www7b.biglobe.ne.jo/~asunarohei/indexhei.htmlです。メールのスクリプトを貼り付けたいのです。それと掲示板をリンクさせたいです。 わからないことだらけで、ご迷惑かけますがよろしくお願いします。

専門家に質問してみよう