exec cgi=AAA.cgi と exec cmd=AAA.cgi の違いがのみこめません...

[上に] [前に] [次に]
kobayashi [E-Mail] 2000/06/02(金) 15:04:48
CGI/SSIの本を読んでも、どうしても、

<!--#exec cmd="ファイル名">と
<!--#exec cgi="ファイル名">

の違いがわからなかったので、こちらで過去ログを調べてみました。

そうしたら、パスの書き方の違いが詳しく書かれているログ
があり(すみません、どのログだったか...)、その内容
から、引数cmdとcgiの違いというのは、単にパスの指定
の仕方だけかなと結論付けてしまいましたが、それで合って
いるのでしょうか?(include の fileと virtual のように)

cgiプログラムは引数をcgiにしておかないと読み込めないと
思っていたのですが、そうではないみたいですね?

なんだか、頭の中がわかったような、わからないような
あいまいな感じなので、すっきり説明していただけると
うれしいのです。お願いします。

悪魔のZ 2000/06/02(金) 15:31:46
良くわかんないけど多分これ?
../200003/00030004.htm

ねね 2000/06/02(金) 15:35:05

中身も違いますよ。cgiの場合は

print "Content-Type:text/html; charset=〜\n\n";

などが必要です。

kobayashi [E-Mail] 2000/06/02(金) 21:40:34
悪魔のZさん、そのページ、私が見たところです!
ねねさん、どうもありがとう。
Content-Typeの宣言の部分は、本に載っていました。
cgiを引数にとったファイルにはこれが必要だって書いてありました。

それで、うまく説明できないんですが、
<!--#exec cmd="ファイル名">と
<!--#exec cgi="ファイル名">
をどうやって使い分けするのかわからないんです。

本で、シンプルなカウンタを作ろうというページがあり、
それは<!--#exec cmd="ファイル名">を使ってありました。
ところが、ここに来てみて<!--#exec cgi="ファイル名">でも
OKなことがわかり、それで作ってみたらそれでもできました。

違うところといったら、ねねさんのおっしゃる中身(Content-Type)
とパスの指定だけで、他は同じプログラムでできてしまい、
そうしたら普通はどっちを使ったらいいのかさっぱり
わからなくなってしまったんです。

何かこっちじゃないとこんなときはダメとかあるのでしょうか。
それとも、CGIプログラムをSSI経由で呼び出すときは
どっちでもいいということなのでしょうか。

ねね 2000/06/02(金) 23:10:11

あと、プログラム内部で他のファイルを参照するときに、
cgi="〜"だと、そのCGIを基点としたパスで書き
cmd="〜"だと、呼び元HTMLを基点としたパスで書く、
という違いがあります。
つまり、隠しカウンタのようにいろいろな階層から呼ばれる
プログラムの場合、CGI形式で書いた方が便利です。
逆に、CGIの不利な点として、URLでどこからでも参照できてしまいますから、
セキュリティホールになる可能性が若干高いと言えます。
あとは趣味の問題です。

kobayashi [E-Mail] 2000/06/03(土) 13:04:51
[[解決]]
ねねさん、ありがとうございます。

ねねさんの2つの説明は、まだ私にとっては少し難しかったです。
(隠しカウンタとか、セキュリティホールになる可能性のくだり。
ごめんなさい。きっと、近い将来、意味がはっきりわかるはず!)

でも、「あとは趣味の問題です」というひとことで、私の中で
わからなかったことがすっきりしました!(私の中でわからな
かったというのはもっと単純なことで、これは使っちゃダメと
いうものであるか、ないかという点だったので...)

一応どっちでもできることはできるということがわかったので
今勉強中の本の次のページにいけそうです。本当にありがとうございました。

[上に] [前に] [次に]