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

このQ&Aに関連する最新のQ&A

A 回答 (5件)

<IFRAME src="*******.cgi" frameborder="0" scrolling="NO" width="" height="" ></IFRAME>



↑表示させたい場所に挿入すれば、
HTMLを出力するCGIでしたらこの中に表示されます。

ブラウザによっては見えない???かも..。
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速試した所すぐにできました。
MSNのサイトなどはトップページで最新情報の処理をするのに同じような処理をおこなっているのでしょうか
http://www.msn.co.jp/home.htm

又違う方法も考えられるのでしょうか
ika3さんの方式だと表示の仕方がなかなか難しく感じられるのですが何か工夫が必要なのでしょうか

いろいろとご面倒かけて申し訳ないです。
お時間などがありましたらどうか教えて下さい(ごめんなさい)

お礼日時:2001/10/31 21:05

では、お使いのサーバが「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/
    • good
    • 0

えー、トップページ自体を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/ のアドレスでもアクセスできます。

ただ、サーバの設定によってはできないこともあります。
    • good
    • 0
この回答へのお礼

このようなCGIを index.cgi として、
実行ビットを立てて見てみてください。

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

お礼日時:2001/11/01 08:20

> MSNのサイトなどはトップページで最新情報の処理をするのに同じような処理をおこなっているのでしょうか



MSNのトップページのバナー広告の部分に使われていますね。
<IFRAME>はバナー広告を表示する時に良く使われているように思います。


> 表示の仕方がなかなか難しく感じられるのですが何か工夫が必要なのでしょうか

ブラウザでフォントサイズを変更されますとバランスが崩れてしましますが、
スタイルシートでフォントサイズをしてやれば大丈夫だと思います。

問題は、フレームに対応していないブラウザでは全く効き目がないということですが、これについては特に対応しておりません。

いい加減な回答で申し訳ありません。
    • good
    • 0
この回答へのお礼

いろいろと教えて頂きありがとうございます。

>MSNのトップページのバナー広告の部分に使われていますね。

という事ですが一面のニュースの所はそうすると手作りで毎日更新しているのでしょうか。
又、いろいろ調べたのですが、cgiを使う個所としてカテゴリ別に別けた項目の後ろがわしに登録件数が表示されているサイトを見かけますが、そのURLを拝見するとco.jpの表記が見られないようです。これも何かcgiを使うためのテクニックとしてあるのではないかと踏んでいるのですが、どうなんでしょうか?

お忙しい所申し訳ないです。

お礼日時:2001/11/01 08:26

ほかによいやり方があるのかもしれませんが、私は以下のように対応しました。



html読み込んであるキーワードを置き換えるように出力する CGIを作って対応しました(邪道?)。

print "Content-type: text/html\n";
print "\n";

open (IN, $basehtml);
while(<IN>) {
 if ($_ =~ /<!--EXCHANGE-->/) {
  置き換えたいソース
 } elsif {
  print $_;
 }
}
close (IN);
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qperlで、[ \r\n , \n ]の意味は?

シンプルなCGI掲示板の勉強中ですが、

$message =~s/[ \r\n , \n ]/<br \/>/g; となっており、
これは改行文字を<br />に置き換えるのだそうですが、
[ \r\n , \n ]の部分というのはどういった意味でしょうか。

[ abc ]だと、a,b,cのうちどれか1文字は入っていれば良いですよね。
[ ]に「,」が入るとよく分からなくなります。

お分かりの方、教えてくださいませんか。
よろしくお願いいたします。

Aベストアンサー

サンプルは、
$message =~ s/\r\n/<br \/>/g;

$message =~ s/\n/<br \/>/g;
1行で済ませようとして間違ってしまったのでしょうか?

\r 復帰文字(return)

\n 改行(newline)

「,」カンマそのもの

\r 復帰文字 (return)
のいずれかを<br />に置き換える、という意味になってしまうでしょうね。
この目的のためには、

$message =~ s/\r\n/<br \/>/g;
$message =~ s/\r/<br \/>/g;
$message =~ s/\n/<br \/>/g;

と3行記述するのがいいのではないでしょうか?

参考サイトに私が勉強させてもらっているサイトを紹介しておきます。

参考URL:http://www.rfs.jp/sitebuilder/perl/04/07.html

Qhtml文を書く時の print の中の\"について。

print "<input type=\"text\" name=\"name\" size=\"30\" value=\"$c_name\">";

よくとか書くやン?
\"これって書くべき?
それとも、書かずにtype=text としてるン?

確かhtml的には、どっちでもいいって書いてあったような気もするけど、みんなはどうしてるン?

書く派?書かない派?
echo <<< html_doc

html_doc;
って、しちゃーんよーん、ってのは例外ね。

Aベストアンサー

ダブルクオテーションは必ず書きます。

\ をいちいち打つのが面倒なので、
こういうときは、qq||を使います。

print qq|<input type="text" name="name" size="30" value="$c_name">|;

QCGIにてPrintを一気に行う

とても基本的なことなのですが、
どうしても検索でも引っかからず、ここに書いています。
CGIのperlにて、printに変わる出力する
命令文があったと思うのですが
どうしても思い出せません。

確か、何かの命令文で囲んだ分だけ
一気にprintと同じように
出力できたはずですが。。。

よろしくお願いいたします。

Aベストアンサー

ヒアドキュメントの事?

例はPerl
print <<EOS;
Content-Type:text/html;

<html><head></head><body>
ここに書いた内容が
表示されます。</body></html>
EOS

Qperl niftyについて。use CGI;

画像アップロードのスクリプトを作ろうと思っているのですが、

use CGI;
という記述をすると、ここでエラーに引っかかります。
下はperl checkerでのエラー表示です

Can't locate CGI.pm in @INC (@INC contains: /usr/local/lib/perl5/5.00503/sun4-solaris /usr/local/lib/perl5/5.00503 /usr/local/lib/perl5/site_perl/5.005/sun4-solaris /usr/local/lib/perl5/site_perl/5.005 .) at a.cgi line 10.
BEGIN failed--compilation aborted at a.cgi line 10.

参考URLはここ
http://www.topstudio.co.jp/~kmuto/html/node38.html

niftyでは使えないようになってしまっているのでしょうか?

また、CGI.pmを使わないファイルアップロードの仕組みを解説しているサイトを知っている方がいたら、教えてくださいませ。

画像アップロードのスクリプトを作ろうと思っているのですが、

use CGI;
という記述をすると、ここでエラーに引っかかります。
下はperl checkerでのエラー表示です

Can't locate CGI.pm in @INC (@INC contains: /usr/local/lib/perl5/5.00503/sun4-solaris /usr/local/lib/perl5/5.00503 /usr/local/lib/perl5/site_perl/5.005/sun4-solaris /usr/local/lib/perl5/site_perl/5.005 .) at a.cgi line 10.
BEGIN failed--compilation aborted at a.cgi line 10.

参考URLはここ
http://www.topst...続きを読む

Aベストアンサー

 cgi-lib.pl というモジュールを使うのが一般的です。
 この "cgi-lib.pl" という文字列をキーワードに検索すると、たくさん出てきますよ。

 自分だけで使う場合はともかく、フリーソフトとして公表するときは CGI.pm がないプロバイダの場合に困るので、あんまり使わないんですよ。

QCGIからsystem("display test.png");を呼び出すとエラーがでるのですが、なぜでしょうか。

CGIについて質問させていただきます。
初めてCGIでWEBアプリを作っているところです。ちなみにPerlも、初めて勉強しはじめました。私が作りたいものは、CGIから、GNUPLOTを使って画像を出力するものです。

error
display: unable to open X server `'., referer: http://....

コードは以下のようなものです。
#!/usr/bin/perl -w
use HTML::Template;
use strict;

gnuplot no syhori....

system "gnuplot /DS/tmp/gnuplot.plot";
system "cd/DS/tmp;ps2pdf /DS/tmp/gnuplot.ps";
system "convert /DS/tmp/gnuplot.pdf /DS/tmp/gnuplot.png";
system "display /DS/tmp/gnuplot.png";

コマンド(display /DS/tmp/gnuplot.png)や、Perl(CGIではなくPerlだけで試しにやってみました)を実行すると正常に画像が表示されるのですが、CGIの中に書くとエラーが出てしまいます。
どなたかよろしくお願いします。

CGIについて質問させていただきます。
初めてCGIでWEBアプリを作っているところです。ちなみにPerlも、初めて勉強しはじめました。私が作りたいものは、CGIから、GNUPLOTを使って画像を出力するものです。

error
display: unable to open X server `'., referer: http://....

コードは以下のようなものです。
#!/usr/bin/perl -w
use HTML::Template;
use strict;

gnuplot no syhori....

system "gnuplot /DS/tmp/gnuplot.plot";
system "cd/DS/tmp;ps2pdf /DS/tmp/gnuplot.ps";
system "con...続きを読む

Aベストアンサー

> ただ、なぜか画像へのパスを書いても、とどかないんですよ。。。。よく
> わかりません。

Web サーバが任意のディレクトリのファイルを外部に表示できるとセキュリ
ティ上問題があるので、それはそうです。とりあえず、画像ファイルを CGI
スクリプトと同じ場所にコピーして、表示できるか確認したらどうでしょ
う。


このカテゴリの人気Q&Aランキング

おすすめ情報