再度教えていただきたいのですが。
前回 http://oshiete1.goo.ne.jp/kotaeru.php3?q=111919
で 1階層目は動いたのですが、2階層目では動きませんでした
ブラウザ(IE)のアドレスで何かをさわって更新すると受け取れます。
TOP.CGIより
<frame src=\"./B.cgi?UserID=$USR\" name=\"ue\" > A.CGIで受け取れました
A.CGI より
<FORM METHOD=POST ACTION=\"WT.CGI?U=$USR\" TARGET=\"_top\">
WT_CGIで受け取れませんでした。(ここでアドレス欄をさわって更新)
WT_CGIより
Location: ./TOP.CGI?U=$USR TOP.CGIで受け取れました。

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

A 回答 (1件)

ごめんなさい。


質問の意味が判らないのですが・・・

要はGET方式では動いて、POST方式では上手く動かなかったと言う事なんでしょうか?

ちなみに
<FORM METHOD=POST ACTION=\"WT.CGI?U=$USR\" TARGET=\"_top\">
は無意味です。

これをやるとすると、


<FORM METHOD=POST ACTION="WT.CGI" TARGET="_top">

<INPUT TYPE=hidden name="U" value=$USR>
<INPUT TYPE=submit name=button value="送信する">
</FORM>

とすべきです。

チェックすべき点は
<FORM>~</FORM>が一対である事
送信用のボタンが存在している事

です。
    • good
    • 0
この回答へのお礼

TYPE=hidden を使うのですね。
うまくいきました。
初心者の上 ASPとCGI(PERL)を併用で作ってまして。
ごちゃごちゃになってしまいました。
ありがとうございました。

お礼日時:2001/08/01 09:42

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

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

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

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

とすると、

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

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

Perlでかいています。

Aベストアンサー

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

Qperlのcgiで-wTを記述するとエラーに

http://oshiete.goo.ne.jp/qa/7451675.html

まだcgiについてわからないことが多く、
色々質問させてもらっているのですが、致命的な?問題がわかりました。

perlにてcgiを作成し、ローカルPCにてコードのチェックのため、

コマンドプロンプトにてC:\adress\test>perl -c encoding

とするとエラーが出ます。
ソースを下の行から順にコメントアウトして調べたところ、
一番最初の行の

#!/usr/bin/perl -wT

で、エラーが出ているということらしいです。
"-T" is on the #! line, it must also be used on the command line at enncoding.cg
i line 1.
この1文が出てしまいます。

-wTを消すとエラーが出なくなります。

エラーを見つけるための-wT記述だと思っていたのですが、-wT自体がエラーになっているということは、一体どういうことなのでしょうか?
書き方が違うのでしょうか?

詳しく教えて頂きたいです。

http://oshiete.goo.ne.jp/qa/7451675.html

まだcgiについてわからないことが多く、
色々質問させてもらっているのですが、致命的な?問題がわかりました。

perlにてcgiを作成し、ローカルPCにてコードのチェックのため、

コマンドプロンプトにてC:\adress\test>perl -c encoding

とするとエラーが出ます。
ソースを下の行から順にコメントアウトして調べたところ、
一番最初の行の

#!/usr/bin/perl -wT

で、エラーが出ているということらしいです。
"-T" is on the #! line, it must also be used on the c...続きを読む

Aベストアンサー

#!で始まる行は、そのファイルを単独で実行するときの引数指定です。

「perl -c encoding.cgi」というように、明示的にperlインタプリタを起動してファイル指定した場合は、#!の行は基本的に意味を持ちません。

その上で、perlインタプリタが「#!行では -T オプション付になっているのに、-Tオプションなしで実行しようとしている」ということでエラーにしているのです。

チェックの時も、「perl -cwT encoding.cgi」のように、-Tオプションを付けてください。
そうすればエラーにならなくなります。

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...
続きを読む

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

Qexec cgi ="aaa.cgi" を有効にする方法

<!--#exec cgi="./aaa.cgi" -->
を記述したshtmファイルからcgi を呼び出そうとすると

スクリプト './test6.cgi' を実行できませんでした: Win32 エラー コード = 2

と表示されて実行できません。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpiis/iishelp/iis/htm/core/iiregwww.asp
を参考に、レジストリを書き換えても出来ません。
どう設定すれば実行できるようになるのでしょうか?

IIS5.0(w2000pro) + ActivePerl

Aベストアンサー

Win32 エラー コード = 2 ってパスが見つからない場合が多いんですが、その辺はどうでしょうか?

・/CGI格納場所/test6.cgi
 または
 http://フルパス/test6.cgi

ではどうでしょうか?
一応以下も。

・test6.cgiは単体で動きますか?
・権限関連は?


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

おすすめ情報