CGIをC言語で書いております。起動時には、http://hoge/a.cgiとしております
ます。この時には、URLにはhttp://hoge/a.cgiとなっているのですが、
そこから先に飛んで、<form method=GET action=a.cgi>で戻ると
http://hoge/a.cgi?
となります。
特に引数は必要ないのですが、なぜでしょうか?
Solalis8.0+Apache+GCCです。

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

A 回答 (1件)

こんにちは。



とりあえず、<form method=GET action=a.cgi>の部分を
<form method=POST action=a.cgi>とすると'?'は出なくなると思います。

どのような引数渡しを行っているか分かりませんが、
<form>から</form>の間の引数を渡すのであれば、method='POST'で構わないと思います。
GET METHODでは、データを、リクエストURLの後ろに付け加える形で送信されますので、今回の引数無しパターンですと'?'が付くだけになるのだと思います。

以下のサイトを参考にしてみて下さい。

参考URL:http://www.futomi.com/lecture/form/
    • good
    • 0
この回答へのお礼

POSTに変更したら?が無くなりました。有難う御座います。

もう一点関連したご質問ですが、
cgiでは無く、htmlを呼び出す箇所があるのですが、
<FORM method=GET action=../a.html>
とすると、やはり?が付きます。ここでPOSTにするとエラー
になってしまい、飛びません。

お礼日時:2002/03/19 17:41

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

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

Aベストアンサー

>画像ヘッダとはどういうものでしょうか?

Content-type: image/gif
Content-type: image/png
Content-type: image/jpeg

など、画像タイプごとに決まっています。
<img>タグに普通の画像ファイルが指定されている場合は
Webサーバが画像ファイルの拡張子から判断して返してくれ
ますが、CGIから返されるデータの種類は拡張子からは判断
できないのでCGI内部からヘッダを返す必要があります。


●CGIがPerlの場合で、GIF画像をCGIから返す例
#!/path/to/perl
print "Content-type: image/gif\n\n";
open(GIF, "file.gif");
binmode(GIF); binmode(STDOUT);
print <GIF>; close(GIF);

もちろん、CGIからは画像フォーマットを返せばいいので、
ファイルから読まずにあらかじめCGIソース内に画像データ
を持っておいて出力する方法も可能です。


ちなみに、多くのCGIではHTMLコンテンツを返す場合が多い
ので、ヘッダは以下のようになります。

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

>画像ヘッダとはどういうものでしょうか?

Content-type: image/gif
Content-type: image/png
Content-type: image/jpeg

など、画像タイプごとに決まっています。
<img>タグに普通の画像ファイルが指定されている場合は
Webサーバが画像ファイルの拡張子から判断して返してくれ
ますが、CGIから返されるデータの種類は拡張子からは判断
できないのでCGI内部からヘッダを返す必要があります。


●CGIがPerlの場合で、GIF画像をCGIから返す例
#!/path/to/perl
print "Content-type: image/gif\n\n...
続きを読む

Qhttp://www.test.cgi/index などのCGI名のあとのパス名

http://www.test.cgi/index
のようになっているものを見かけるときがあります。普段は
http://www.test.cgi?mode=index
などしているのですが、どのような仕組みになっているのでしょうか?
これはPerlに限らず、CGIとして動作するものなら実装できるのでしょうか?
疑問に思ってしまったので、ご回答のほどをよろしくお願いします。

Aベストアンサー

PATH_INFOと呼ばれる情報です。Perl/CGIであれば環境変数の$ENV{'PATH_INFO'}で取得する事が出来ます。クエリー(?xxx)が$ENV{'QUERY_STRING'}で取得出来る事と同じ要領です。組み合わせてtest.cgi/path/info?query=stringのようにする事も出来ます。(それぞれ上記の環境変数で別々に取り出せます。)

他の言語に関しても取得出来ます。言語名とPATH_INFOで検索をかけてみてください。(例えば『php path_info』等)

Q
の場所は?

CGIでデータを受け渡しするアンケートを作っています。html中に書く<form method=post action="***.cgi">~</form>“~”の場所についてですが質問項目を全て挟まなくてはいけませんか?実は、チェックボックスの「最大2つまで回答可」という部分をJavascriptでチェック個数を超えてチェックした時点でアラートが出るようにしてます。その記述中にすでに<form>~</form>タグを制限をかけたい質問に置いているので、質問全体を<form method=post action="***.cgi">~</form>でくくると入れ子になってしまいます。大丈夫ですか?

Aベストアンサー

<form method=post action="***.cgi" name="form1">~</form>
にする。つまり「最大2つまで回答可」という部分だけをonclickでJavascriptを呼び出したらいいと思います。

QCGI(HTTP://dbgw_relay.cgi)の呼び出しができま

CGI(HTTP://dbgw_relay.cgi)の呼び出しができませんでした。
サーバーへ接続できませんでした。リモート名を解決できませんでした:'dbgw_relay.cgi'

ホームページビルダーで作ったページに買い物かご(ダヴィンチカート)を設定したいのですが、ショッピングカートを設置するサーバを設定する段階で上記のエラーになってしまいます。これはどうしたら解決できるのでしょうか。どなたかご教示お願いいたします。(ちなみに初心者です)

Aベストアンサー

http://www.netdeoshigoto.com/nso_support/2008/02/cgihttpdbgw_relaycgi404.html

最低限 FAQ くらいは目を通してから質問するべきだと思うんだ

Qhttp://***.cgi?key=$keyの部分について

<a href='***.cgi?key=$key'>リンク</A>

とすると、

http://**.cgi?key=*****
というリンクがアドレスバーに表示されて、次のページへ進みますよね。

この、cgiの後の部分(?key=****)を表示しない方法というのはありますか?
POSTでやれば表示されませんが、ボタンばっかりだとすっきりしないので…。

Perlでかいています。

Aベストアンサー

ボタンだとすっきりしないというのが見た目の問題ならば、スタイルシートでボタンをテキストリンク風な表示にすることもできますが、それでは不都合があるでしょうか?
なお、どのようなCGIかはわかりませんが、getで問題ない部分はgetにしておいた方が直接urlを表記したい場合に使い勝手がいい場合もあります。
(例えばgoogleの検索がpostだったら、かなり使い勝手が悪くなりますね。)


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

おすすめ情報