• ベストアンサー

CGIの出力結果をHTMLに表示したい(SSI使用)

http://wa-ka.net/mash/sozai/tenshin/index.html 上記のサイトのアンケートCGIを利用しています。 アンケートの集計結果を、HTML上に表示したいのですが、どのようにしたら良いのかアドバイスをお願い致します。 HTMLのページの中に <!--#exec cgi="./tenshin.cgi?mode=reportfile"--> と記載しても上手く表示されません。 ですが、 <!--#exec cgi="./tenshin.cgi"--> と記載すると、一応 tenshin.cgiにアクセスした時に表示される内容が表示されます。 HTMLファイルと、cgiは同じ階層においてあります。 <!--#exec cgi="./tenshin.cgi"--> と <!--#exec cgi="./tenshin.cgi?mode=reportfile"--> の違いは、「?mode=reportfile」があるか無いかなのですが、このようにcgiの後に何か付いてしまうと、SSIでCGIを呼び出しHTMLに表示する事はできないのでしょうか? アドバイスをお願い致します。

  • Perl
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
回答No.2

<!--#exec cgi="./tenshin.cgi"--> として http://wa-ka.net/mash/sozai/tenshin/index.html?mode=reportfile でアクセスすればQUERYは渡るけど駄目なのかな? この辺りのことは #! /usr/local/bin/perl print"Content-type: text/html; charset=shift_jis\n\n"; print"<html><body>\n"; print"<h1> [環境変数のTEST] </h1>\n\n"; foreach(sort(keys %ENV)) {print" \$ENV{'$_'} = $ENV{$_} <P>\n"; } __END__ ってなCGIを置いてみて、SSIで呼び出すとか色々試せば ヒントが浮かんでくるかと思うけど? >このような方法で問題はありますでしょうか? さあ?私は特に問題があるようには聞いていませんが

Cuty_Cat
質問者

お礼

ご回答ありがとうございます。 SSIやPerlに対しては、あまり知識がないので、WEB上で調べてできそうな範囲内でしか、私にはできないのが悲しい所です。 <!--#include virtual="./tenshin.cgi?mode=reportfile"--> 一応、上記の方法でアンケート結果を表示させる事ができたので、この方法で対応したいと思います。 特にこの方法でも問題ないとの事なので、安心しました。 ありがとうございました。

その他の回答 (2)

noname#19175
noname#19175
回答No.3

mode=reportfileの時に、 "Content-type: text/html\n\n"(または、"Content-type: text/plain\n\n") を出してないのでは?

Cuty_Cat
質問者

お礼

ご回答ありがとうございます。 >mode=reportfileの時に、 >"Content-type: text/html\n\n"(または、"Content-type: text/plain\n\n") >を出してないのでは? これについては、perlにはそれほど知識が深い訳ではありませんので、どこを見れば良いのかも分からないので、御指摘の箇所については実際はどうなっているの分かりません(ー_ー) <!--#include virtual="./tenshin.cgi?mode=reportfile"--> 一応上記の方法で、上手く表示させる事ができたので、この方法を使用したいと思います。 ご回答ありがとうございました。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

tenshin.cgi?mode=reportfile の処理を別のCGIとして分けてやればいいと思います。

Cuty_Cat
質問者

お礼

ご回答ありがとうございます。 >tenshin.cgi?mode=reportfile >の処理を別のCGIとして分けてやればいいと思います。 そうですね。これができれば問題はないのですが、自力でそのようなCGIを作成する事ができなかったので、SSIで表示できるように、何か良い方法はないかと思い質問をした次第です。 もう少し調べてみて、下記の通りに記述したら上手くできました。 <!--#include virtual="./tenshin.cgi?mode=reportfile"--> このように記述して上手くできましたが、このような方法で問題はありますでしょうか? 何かあれば、御指摘をお願いします。 それでは、よろしくお願いします。

関連するQ&A

  • CGIの出力に別のCGIの出力結果も同時に表示させたい

    ショッピングカートのCGIに、アンケートCGIの集計結果も一緒に表示させたいと思います。 ショッピングカートで、まず商品を検索。 検索結果の商品ごとに、ユーザーに付けてもらったアンケート結果も一緒に表示させて、商品の評価も見て分かるようにしたいです。 SSIの利用を考えていたのですが、CGIの中でSSIを使用してもコメント扱いになり、SSIを動作させる事ができないと言う事が分かり、今回質問しました。 アンケートCGIは下記のスクリプトになります。 http://wa-ka.net/mash/sozai/tenshin/index.html 上記のサイトのアンケートCGIを利用しています。 アンケートの集計結果を、ショッピングカートCGIの検索結果に表示したいのですが、どのようにしたら良いのかアドバイスをお願い致します。 「tenshin.cgi?mode=reportfile」とすると、アンケート結果が表示されるようになっています。 ショッピングカートの検索結果の出力部分は、 $print .=<<HTML; HTML の間に記述されているHTMLの情報が、出力結果として表示されるようになっています。 この中に「$item」「$price」「$comment」等の変数(?)が入っており、商品毎の情報が表示されます。 上手く説明できているか分かりませんが、CGIの出力に別のCGIの出力結果も一緒に表示させる方法はありますでしょうか。 アドバイスをお願い致します。

    • ベストアンサー
    • Perl
  • SSIを使ってCGIを呼び起こしたいのですが

    index.shtmlのタグにssiを使用したいのですが index.cgi?mode=m のようなパラメータもつけて実行させる場合 <!--#exec cgi="./index.cgi?mode=m"> ではだめなんでしょうか? [an error occurred while processing this directive] というエラーがでました。 どうかご教授ください。

    • ベストアンサー
    • CGI
  • SSIを使ってHTMLページにCGIを埋め込みたい

    使っているサーバーがSSIが使えるとの事で今回初めてSSIを使ってHTMLページにCGIを埋め込みたいと思い、色々なページを見ながら設置してはみてるんですが、 [an error occurred while processing this directive] となってしまいます。 やってみた事は test.shtmlを作り<BODY></BODY>の中に <!--#exec cgi="/navi/can.cgi"--> などとしてみたりしましたが上記のエラーが出てしまいます・・ 初歩的な質問なのかもしれませんが何が間違えているのかもわからなく、すみませんが教えていただけないでしょうか? よろしくお願いします。

    • 締切済み
    • CGI
  • HTMLとSSIが同じフォルダに無いと表示しない?

    ホームページにアクセスカウンタをつけようとしています。 表示はSSIで行うのですが、1つ問題が… 表示させたいHTMLファイルとSSI動作させるCGIが同じフォルダに無いと表示しないんです。 CGIはフォルダを整理するため「cgi-bin」の中に入れておきたいです。でも、そうすると動かなくなる(表示しなくなる)んです。 もちろんですが、サーバでのSSIの使用は許可されています。(じゃないと、同一フォルダでも動かないですよね) パスは、いくらなんでも間違えようが無いです。 フルパス(http://~)で書いてもだめです。 何か方法があるのでしょうか?

    • ベストアンサー
    • CGI
  • CGIにSSIカウンタをつけたい

    掲示板や日記帳などのCGIに、別途ダウンロードしたSSIのテキストカウンタを表示させようとしたところ、ローカル・Web共に表示されませんでした。 表示する為の記述は「<!--#include virtual="仮想パス"-->」で、HTMLファイルに記述した場合は問題なく表示・動作しました。 HTMLファイルで表示・動作しましたし、CGI・SSI・「.htaccess」ファイルなどの設定はおそらく問題ありません。 SSIのテキストカウンタは「The Room」というサイトの「Text Day Counter Ver.1.10 SSI版」を使用しています。 CGIは「掲示板や日記帳など」と言いましたが、まだ検討段階で特定のCGIはなく、色々なCGIで試しています。 ※特定のものだけではなく、テキストカウンタを表示したいと思うCGIにつけたいのです。 CGIの記述は (1) print "<!--#include virtual=\"仮想パス\"-->\n" ; (2) print '<!--#include virtual="仮想パス"-->\n' ; (3) print "<!--#include virtual='仮想パス'-->\n" ; (4) print <<"EOM"; <!--#include virtual="仮想パス"--> EOM と4通り試しましたが、どれも動作しませんでした。 SSIのテキストカウンタのパスが「http://xxx.yyy.zzz/aaa/bbb/ccc/txtdayc1.cgi」だとしたら、仮想パスは「/aaa/bbb/ccc/txtdayc1.cgi」のようなので、そう記述しましたが動作しませんでした。 CGIと同じディレクトリに置いているので、記述を「<!--#include virtual="./txtdayc1.cgi"-->」に変えたところ、HTMLファイルでは動作しました。 なぜSSIのテキストカウンタがCGIで表示されないのか、アドバイスをお願いできないでしょうか? また、「<!--#include virtual="仮想パス"-->」を「<!--#include virtual="CGIファイル名"-->」または「<!--#include virtual="フルパス"-->」のように記述しても問題ないのかも教えて頂けると助かります。 宜しくお願い致します。

    • ベストアンサー
    • CGI
  • SSI で #exec 以外で Perl-CGI を実行する方法は?

    最近 CGI に興味をもち Perl を始めました。 簡単なサンプルを無料サーバーにアップロードして cgi だけを 直接実行すると問題なく実行されます。 ですが SSI の #exec を使って HTML ソースに <!--#exec cgi="/cgi-bin/sample.cgi" --> と記述してページを開くと [an error occurred while processing this directive] と表示されてエラーになりました。 無料サーバーは infoseek で CGI/SSI は使えると書かれていたので 試してみました。それでもう一度確認の為に読んで見ると『#exec』は セキュリティ強化のため利用できないことが判明しました。 http://help.www.infoseek.co.jp/isweb/20602.html#7 質問内容: (1)CGI/SSI は使えるが #exec は使えない状況でどうやって Perl-CGI を   HTML ソースに記述して実行すればよいのか? (2)CGI は cgi-bin に置きパーミッションを 755 に設定しています。   設定は infoseek さんの指示通りです。他に設定すべき点ありますか? (3)Perl-CGI の1行目ではちゃんと『#!/usr/local/bin/perl』と記述しています。   こちらも infoseek さんの指示通りです。   Perl の記述で何か気をつけるべき点はありますか?バグ以外で。 (4)HTML ソースの拡張子は shtml にしています。   SSI を使うにはサーバーが対応していれば拡張子を変えるだけで使えるのですか? 今回の質問は Perl-CGI を HTML ソースに記述して実行する?には どうすべきかをお聞きしたいです。infoseek さんの情報は次のリンクです。 http://help.www.infoseek.co.jp/isweb/20601.html またネット検索していたら次のページを発見しました。 http://cocohome.hp.infoseek.co.jp/ssi/ ここの人は私と同じ infoseek で SSI 入門を書いています。 なぜこの方は SSI の #exec が使えるのでしょうか? この辺も知りたいです。 分かる方お願いします。 教えて下さい。

    • ベストアンサー
    • CGI
  • SSIでCGIを起動するには…

    同じ質問をしてましたが、回答がなかった為、カテを変えて質問します。 SSIを使いフレームみたいなページを作りました。 左側のメニューページをSSIで呼び出し、実行と言った感じです。 それで、掲示板などのCGIを右側のページに呼び出そうと思ったのですが、どうやっても出来ません。 画面は一応は呼び出せるのですが、画面がぐちゃぐちゃになっていて、そのCGIの書き込みすら出来ない状態です。 また、CGIを表示するHTMLを呼び出しても同じ結果でした…。 パーミションは変更しています。 またインラインフレームでは表示、書き込みは可能なのですが、 なんとかSSIで表示できないものかと悪戦苦闘です^^; この様な場合、どうすれば良いのか教えてください!! もしくは、設置に関するwebページなどがあったら教えてください!!

  • Apache2.2でPerlを呼び出すSSIを使ったHTMLをloca

    Apache2.2でPerlを呼び出すSSIを使ったHTMLをlocalhostで動かそうとしています。 AddHandler cgi-script .cgi .plに変更。 exec cmdをHTMLファイルに埋め込みました。 <!--#exec cmd="/PROGRA~1/APACHE~1/Apache2.2/cgi-bin/counter.pl counter"--> インターネットのApacheでSSIを使う方法を読み,httpd.confの中に Options FollowSymLinks Multiviews の後にIncludesをつけ   AddType text/html .shtml と   AddHandler server-parsed .shtml を加えました。しかし、localhostで実行するとHTMLのSSIの部分だけ表示されません。 (アクセスカウンターのカウンターだけ表示されません)。エラーログには ”指定されたファイルが見つかりません。 : don't know how to spawn cmd child process: C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/counter.shtml” と記録されていました。 どうしたらよいのでしょうか。 どなたか解決できるかた、回答よろしくおねがいします。

    • 締切済み
    • CGI
  • CGIの処理結果をHTML内に表示したい!

    はじめまして。 CGI初心者です。 現在、とあるフリーのアンケートのCGI(perl)を改良していて、それは、アンケートに答えて、送信ボタンを押すと、CGIファイルの処理結果として、これまでのアンケートの集計結果がグラフで表示されるというものです。 その集計結果のみを、別ページ(左側や上部にメニューがあるもの)のHTML内に収めたいのです。 ※新しいウィンドウが開かなくてもOKです。 ※その別ページというのが私のオリジナルのページになります。 イメージとしては、 1)anket.html(アンケートに答える)  ↓ 2)anket.cgi(返答内容とこれまでの集計を処理)  ↓ 3)anket.html(集計結果が埋め込まれたHTMLファイルが表示される) 初心者なので、用語の使い方等間違っていましたらすいません。。 よろしくお願いします!

  • PerlでHTMLを読み込み記述されたSSIコマンド(exec)の実行を実現するには。

    HTMLファイルを読み込んで表示するCGIを作っています。 それで、そのHTMLファイルに記述されたSSIコマンドを、 そのCGIで認識して、それを実行する。ということを実現したいと思っています。 includeコマンドは簡単に実現ができたのですが、 execコマンドが完全には実現できません・・・。 一応、openのパイプを使って、 <!--#exec cmd="test.cgi" --> のようなコマンドを認識しそれを実行して返すことはできました。 しかし、test.cgi?a=wのように パラメータをつけての実行が実現できません。 もちろん、SSIと同じように、 execコマンドで実行する先のCGI、プログラムなどを 改変することなくそのまま実行できることが条件です。 (例えば、$ENV{'QUERY_STRING'}ではなくARGVを使うようにするのではダメなんです) お知恵をお貸しいただけると幸いです。 どうかよろしく御願いいたします。

    • ベストアンサー
    • Perl

専門家に質問してみよう