同一CGI上でキーワードを渡すには?

[上に] [前に] [次に]
さっち 1999/05/21(金) 09:32:46
こんにちは。
1つのcgiのなかで
         fname.cgi?keyword
と渡し、if($ARGV[0] eq "keyword")
と、しているのですがうまくいきません。
どうしてでしょうか?

無責任官庁 1999/05/21(金) 13:36:40
一つのCGIの中で・・・
と言うことがどういうコトを示すのかは分かりませんが、
@ARGVは引数を受け取るものなので、
例えば、system("hoge.cgi keyword");
とした場合、hoge.cgiでkeywordを受け取る時に使用します。
(hoge.cgiとkeywordの間は、空白ですよ)

もし、Location: /cgi-bin/fuga.cgi?keyword
のような使い方をするならば、
受け取る変数名は、$ENV{'QUERY_STRING'}
になります。

#前者の方のコト言ってるのかなぁ・・・
#ちょっと不安・・・(^_^;)

さっち 1999/05/21(金) 17:17:21
自分でもよくわかっていないのですが、
とほほさんのソースプログラムを参考に
しているのですが・・・。
とほほさんのやり方は、どういう形なの
ですか?

無責任官庁 1999/05/21(金) 20:02:57
すみません、私もあまりそれ使ったコトないんで、テキトウな事
言ってしまったようです。
(詳細はこのへん→http://www.tohoho-web.com/wwwcgi4.htm#CgiTemplate

調べた結果、@ARGVでもうまくいくハズなのですが・・・
$ARGV[0]の中身を表示させてみたりして、チェックしてはどうでしょう。
keywordの文字列に、"+"が含まれてたりはしないですよね・・・?

たこすけ 1999/05/21(金) 20:47:03
フォームからMETHOD=GETで呼び出してるとか・・・?

さっち 1999/05/24(月) 11:08:13
METHOD=POST ACTION='fname.cgi?keyword'とフォームで
指定しているのですが(+は入れていません)。
なにか宣言など足りないのでしょうか?


B-Cus 1999/05/24(月) 12:29:21
URLとスクリプトのソースを公開するのが一番てっとり早いです。

さっち 1999/05/24(月) 13:28:15
B-Cusさんの言う通りURLとソースを公開します。
臨時で作ったページなのでその他何も有りません。
http://wwws.icd.slsi.sony.co.jp/~satiko_h/index2.html
ソースファイルは、とほほさんのを変更、削除した
ものになっています。でも、よくわかっていないの
で、変なプログラムになっていると思いますが・・・。


B-Cus 1999/05/24(月) 16:25:53
> wwws.icd.slsi.sony.co.jp
IPアドレス引けないです。
このホストってファイアーウォールの中にあるんじゃないですか?


B-Cus 1999/05/24(月) 16:54:03
まぁ、そんなことより、
> ソースファイルは、とほほさんのを変更、削除した
> ものになっています。でも、よくわかっていないの
> で、変なプログラムになっていると思いますが・・・。
これがそもそもの間違いですね。わかっていないと自覚しているなら、
まずは数行のテストプログラムで動かしましょう。

#!/usr/local/bin/perl
print "Content-type: text/plain\n\n";
print "ARGV is ...\n";
print join(",",@ARGV)."\n\n\n";
print "QUERY_STRING is ...\n$ENV{QUERY_STRING}\n\n";
print "STDIN is ...";
print <STDIN>;

さっち 1999/06/09(水) 08:45:49
[[解決]]
試してみた結果、エラーは違うところで発生していたようです。
(というか、なんとか動きました。)
色々と助けてくださりありがとうございました。

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