• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:cgiの実行結果の中にphpを挿入したい)

cgiの実行結果にphpを挿入する方法

このQ&Aのポイント
  • cgiの実行結果にphpを挿入する方法はありますか?
  • csvファイルの一覧から特定のデータを表示するdatabase.cgiを利用していますが、その表示結果をphpで自動表示したいです。
  • htmlファイルではSSIを使えますが、cgiファイルでは使えないため、cgi上でphpが吐き出したファイルをそのまま表示する方法はありますか?

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

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.5

遅くなって申し訳有りません 以下、Sjax版のサンプルです。 CGIからはきだすHTMLと思ってください -----------------------------------------------------------------------------ここから <html> <head> <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>SJAX</title> <script language="javascript"> <!-- // ------------------------------------- // ------------------------------------- function fCall(CODENUMBER){ var xObj = createHTTPRequest(); var fName = "http://www.hoge.jp/hoge.php?" + CODENUMBER; xObj.open("GET", fName, false); xObj.send(null); // setInterval ( "fCall()", 5000 ); var oText = document.getElementById("ShowData"); oText.innerHTML = xObj.responseText; } // ------------------------------------- function createHTTPRequest(){ if(window.ActiveXObject && !window.XMLHttpRequest){ try{ return (new ActiveXObject('Msxml2.XMLHTTP')); }catch (e) {} try{ retrurn (new ActiveXObject('Microsoft.XMLHTTP')); }catch (e) {} return (null); }else if(window.XMLHttpRequest){ return (new XMLHttpRequest); }else{ return null; } } //--> </script> </head> <body onload="fCall(ここにCGIが受け取ったコードを挿入)"> <span id="ShowData"></span> </body> </html> -----------------------------------------------------------------------------ここまで お役に立てるといいのですが

tajix14
質問者

お礼

ご回答ありがとうございます。 お返事が遅くなり申し訳ございません。 お教え頂いたソースを参照としてSjaxを勉強しだしました。 ここ数日、ANo.1さんの方式ともどもテストを繰り返して おりますがまだうまくいきません。 もうしばらく時間が掛かるかもしれません。 これ以上回答が遅れるのは失礼と思い、ひとまず御礼させ てもらいます。 本当にありがとうございました。

その他の回答 (4)

  • shiren2
  • ベストアンサー率47% (139/295)
回答No.4

ANo. 1です。 では、下記のコードを使ってみてください。 $contentを<<HTMLの中の必要箇所に組み込めば動くと思います。 #!/usr/bin/perl use LWP::Simple; use URI; ... 中略 ... # アドレスを設定すること my $uri = URI->new("http://aaaa.test/hoge.php"); $uri->query($data[2]); my $content = &get($uri); # 必要な箇所に入れる $print .=<<HTML; $content HTML

tajix14
質問者

お礼

ご回答ありがとうございます。 お返事が遅くなり申し訳ございません。 ここ数日、ご教授頂いた方法でテストを繰り返して おりますがまだうまくいきません。 $uri->query($data[2]); がどうしてもうまくいきませんでした。 CGI全体の問題なのだと思います。 もうしばらく時間が掛かるかもしれません。 これ以上回答が遅れるのは失礼と思い、ひとまず御礼させ てもらいます。 本当にありがとうございました。

  • shiren2
  • ベストアンサー率47% (139/295)
回答No.3

ANo. 1です。 >ソースの中で1001を指定して指示することに 動作説明の為に数値を直書きしただけですので、"1001"を変数(今回であれば$data[2])に置き換えていただければ、そのまま使えると思います。 必要な部分に組み込んで使用してください。

tajix14
質問者

お礼

ありがとうございます。 早速試してみました。 CGIの中の $print .=<<HTML; ・・・・・・ HTML で囲まれた部分に use LWP::Simple; use URI; my $uri = URI->new("http://aaaa.test/hoge.php"); $uri->query("1011"); &getprint($uri); を記載すると、そのままの文字が出てしまいます。 また、プログラム部分に記載すると、エラーになってしまいます。 ホームページを見に来た人に見えるように表示するためには $print .=<<HTML; の後に記載するものだと思いますが、状況を見る限り 何か根本的に間違っている気もします。 use LWP::Simple; use URI; my $uri = URI->new("http://aaaa.test/hoge.php"); $uri->query("1011"); &getprint($uri); はCGIのどの部分に記載すべきものなのでしょうか? 本当にご迷惑をおかけし申し訳ございません。 素人で本当に申し訳ございません。

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.2

もうひとつの選択肢として CGIではきだすリソース内にPHPを呼び出すAjax(またはSjax)コードを埋め込んで「innerHTML」で表示させればどうでしょう? サーバサイドのスクリプトを多重起動することはできない(作り方によっては永久ループならぬ永久呼出状態になってしまう)ので前回答者さまのようにするか、クライアントサイドから呼び出ししなおすしか方法は無いと思います。 実例が必要なら少しお待ちを・・・。

tajix14
質問者

お礼

>CGIではきだすリソース内にPHPを呼び出すAjax(または >Sjax)コードを埋め込んで「innerHTML」で表示させれば >どうでしょう? ありがとうございます。 Ajax(またはSjax)はまだ手をつけたことがないので、ご教授 頂けましたら幸いです。 「innerHTML」という名前からすると可能性があるような気がします。 私のやりたいことを補足いたします。 今回使用しているdatabase.cgiは、HTML表示部分において $data[2] と記載し、database.cgi?equal2=1001 とURLを打つ とHTML上に1001と出てきます。 このことを利用し、CGIの中のソースの一部として1001を書き 込むのではなく、あくまでphp表示上の変数として使用したい のです。 cgiのHTML表示部分に hoge.php?$data[2]  と記載します。 database.cgi?equal2=1001 と表示したときに$data[2] が1001になり、それに対応する hoge.php?1001 の記事がHTML上で表示される。 database.cgi?equal2=1005 と指示したら$data[2] が1005に なり、それに対応するhoge.php?1005 の記事がHTML上で 表示される。 ものとしたいのです。 アドバイス頂けるようなことがございましたらよろしくお願い いたします。

  • shiren2
  • ベストアンサー率47% (139/295)
回答No.1

方法は二つあります。 httpリクエストを送る方法と、直接実行する方法です。 1) use LWP::Simple; use URI; my $uri = URI->new("http://aaaa.test/hoge.php"); $uri->query("1011"); &getprint($uri); 2) $ENV{'QUERY_STRING'} = "1011"; system("/usr/bin/php", "./hoge.php");

tajix14
質問者

お礼

ご回答ありがとうございます。 大変勉強になりました。 ただやはりソースの中で1001を指定して指示することに なってしまいますよね。 私が必要としていることは下記です。 今回使用しているdatabase.cgiは、HTML表示部分において $data[2] と記載し、database.cgi?equal2=1001 とURLを打つ とHTML上に1001と出てきます。 このことを利用し、CGIの中のソースの一部として1001を書き 込むのではなく、あくまでphp表示上の変数として使用したい のです。 cgiのHTML表示部分に hoge.php?$data[2]  と記載します。 database.cgi?equal2=1001 と表示したときに$data[2] が1001になり、それに対応する hoge.php?1001 の記事がHTML上で表示される。 database.cgi?equal2=1005 と指示したら$data[2] が1005に なり、それに対応するhoge.php?1005 の記事がHTML上で 表示される。 ものとしたいのです。 折角、丁寧な回答を頂いたのに説明が悪く申し訳ございま せん。 もし何かアドバイス頂けるようなことがありましたらお願い 申し上げます。

関連するQ&A