• ベストアンサー

includeコマンドについて

CGIより書き出されたHTMLから <!--#include virtual="・・・" -->のようにincludeコマンドは使えるのでしょうか? 具体的にはこのコマンドでさらにCGIを呼び出したいのです。CGIを呼び出してその中からさらにCGIを呼び出したいみたいに。 print << "END_OF_DOC"; のようにヒアドキュメントの中に書き込んだのですが駄目でした。 ソースを見ると、<!--#include virtual="・・・" -->はそのままソースの中に入ったままでした。 うまく説明できないのですがこれでもわかる方お願いします。

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

  • ベストアンサー
  • hisappy
  • ベストアンサー率46% (184/392)
回答No.1

サーバのプログラムがいじくりまわせない限り、 単純に実行するのは無理だと思います。 なので、次のような手法はどうでしょうか? 1.呼び出し元となるHTMLからCGIをコールする。(現状のまま) 2.現在のCGIが生成しているHTMLをファイルでサーバ上に吐き出す。   (注:HTMLファイルとして参照可能な場所に吐き出せることが可能であること) 3.現在のCGIの最後(処理終了)のタイミングで、   吐き出したHTMLへ自動的にジャンプさせる。 4.すると吐き出されたHTML中のSSI(?)は実行される。 と思います。 もしかしたら、CGIの環境設定で簡単に対応できる ことかもしれませんが、できない環境で対応しようというのが この手の問題の定番のようです。。 私もよく悩まされます。頑張って乗り越えましょう。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CGIの中にinclude

    メニューがコンテンツ変更で増減したときの管理がしやすいように、メニュー部分をCGIで作り、全ページで同じメニューを表示させるようにしました。 通常のHTMLファイルはこれで正常に表示するのですが、メールフォームCGIや掲示板CGI等にも同じように表示させたいのですがうまくできません。 HTMLファイルと同じように「include virtual」を記入しても何も表示されず、ソースを見ると「include virtual~」がむなしく表示されているだけでした。 で、次に「require '../menu/menu.cgi';」を試してみたのですが、こちらは500エラーが出てしまいます。 どのようにしたらよいのでしょうか? メニューCGIはただのHTML文ではなく、ページに応じたサブメニュー表示等をしているのでデコード処理をしていますが、これが原因とかありますか?

  • includeすると?が入る

    win2000、PHP5.3.0にて、includeをすると?が入ってしまいます。 具体的には -- a.php -- <?PHP print "A"; include 'b.php'; print "B"; ?> -- b.php -- C <?PHP print "D"; ?> E -- 結果 -- A?C DE B ブラウザ上ではこの?が見えないのですが、ソース上ではあります。 この?を何とかしたいのですが、これは何かの設定ですか?仕様ですか?不具合ですか?

    • ベストアンサー
    • PHP
  • 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
  • ヒアドキュメントはHDMLには使えないのでしょうか?

    いつもお世話になっています。 tukaの古い携帯用にCGIの中のHTMLをHDMLに書き換えて ヒアドキュメントでかこってやってみたのですがエラーになりました。HDMLではヒアドキュメントはつかえないのでしょうか?ちなみに1行づつprint文で書いた場合は動きました。長い記述でめんどくさいので、できればヒアドキュメントを使いたかったのですが無理なんでしょうか?

    • ベストアンサー
    • PHP
  • 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
  • PHPの@includeとは?

    現在PHPのソース解析を行っております。 初心者なのですが、実際動いている本格的なPHPソースを解析して勉強するように言われております。 その中で、@includeというものが度々出てくるのですが、普通のincludeとは何が違うのでしょうか? 調べてみましたが、http://php.net/manual/ja/function.include.phpこちらではよくわかりませんでした。 @が付くと具体的にどのようなことが起こるのでしょうか? よろしくお願いいたします。

  • <!--#include を使うと減点されます。

    shtmlの中に、 <!--#include file="○○.shtml"-->を使ってフ ァイルを挿入した場合。 挿入したファイルのソースに自動的に<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">の文字が入ってきます。 これは挿入するshtmlファイルの先頭に必ず付される文字です。 この挿入されたファイルの全ソースを http://www.scurry.co.jp/faq_c32.htmlのサイトで採点すると大きな減点になります。 seo的には良くないのでしょうか? 宜しく、お願いします。

  • ヒアドキュメントの制約?

    PHP5を使っています。 ヒアドキュメントで以下のように書きましたが1ではエラーになり2ではエラーになりません。 配列の添え字の前後にスペースを付けて、ソースを見やすくしていたのですが、ヒアドキュメントでは、これはエラーになるのでしょうか? 理由が知りたいです。 $ary_dat = array("あ", "い", "う"); (1) echo <<<END_OF_DAY $ary_dat[ 0] END_OF_DAY; (2) echo <<<END_OF_DAY $ary_dat[0] END_OF_DAY;

    • ベストアンサー
    • PHP
  • ヒアドキュメントの外部化

    perl勉強中です。ヒアドキュメント簡単でいいのですが、 CGIファイル内に書き込み変更することはあまりしたくないのですが、 よくスキン式にしているCGIを見かけますが、どのように外部HTMLファイルを読み込みしているのでしょうか? 下記ヒアドキュメント部分を外部ファイルから読み込みたいです。 なかなか詳しく書いてあるサイトがないので(探し方が下手なので)紹介していただけるサイトはないでしょうか? print <<EOM; <htmlタグ・・・・> EOM

  • ヒアドキュメントの中で別ファイルをインクルード

    PHPでヒアドキュメントの中で別ファイルをインクルードする方法はどのように処理するのでしょうか? sample.txt <p>サンプルテキストからの文字</p> ------------------------------------ sample.php $sample = <<<_EOM_ <html> <head> </head> <body> サンプルサンプル<br> *ここにsample.txt内のhtmlソースをインクルードしたい。 </body> </html> _EOM_; 以下省略(echoとかで出力)

    • 締切済み
    • PHP
このQ&Aのポイント
  • パソコンのキーボードで直接入力する方法がわからないとお困りのようです。
  • タッチパネル式での入力設定になっているため、キーボードでの入力方法を教えてほしいという質問です。
  • ソースネクスト株式会社の製品・サービスについての質問です。
回答を見る