プロが教える店舗&オフィスのセキュリティ対策術

はじめて質問します。よろしくお願いします。

フォームからデータを受け取って、なんらかの処理をしてから、
locationで別のページへジャンプしたいのです。

下のソースで、ローカル(win95)では正常に動いたのですが、
サーバーに移すと送信後のtest.cgiがエラーになってしまいます。
text.txtへの書込みはちゃんと行われています。

原因がわからなくて困っています。
locationの使い方が間違っているのでしょうか?

↓↓ test.cgiソース ↓↓
------------------------------------------------------------

#!/usr/bin/perl

require 'jcode.pl';
&decode;

if ($FORM{'cmd'} eq "regist") {

&write;# ファイル書込み
print "Location: index.html\n\n";

} else {

print <<END;
Content-type: text/html

<HTML><HEAD><TITLE>タイトル</TITLE></HEAD>
<FORM ACTION="test.cgi" METHOD="POST">
<INPUT TYPE=TEXT NAME="message" VALUE="">
<INPUT TYPE=SUBMIT NAME="submit" VALUE="送信">
<INPUT TYPE=HIDDEN NAME="cmd" VALUE="regist">
</FORM>
</BODY></HTML>
END
}
exit;

# ファイル書込み
sub write {
open OUT, ">test.txt";
print OUT "$FORM{'message'}\n";
close OUT;
}

A 回答 (2件)

いちどHTMLを出力し、<META HTTP-EQUIV='Refresh' CONTENT='秒数;URL=http://~~'> で飛ばすしかないようです。



参考URL:http://www23.tok2.com/home/FAQ/cgi1.html#Location
    • good
    • 0
この回答へのお礼

なるほど、わかりました。
どうもありがとうございました。

お礼日時:2001/07/02 20:41

Location: のアドレスをhttp:// から始まるアドレスにしたほうが


いいかもしれません。

参考URL:http://tohoho.wakusei.ne.jp/wwwcgi3.htm

この回答への補足

ご回答ありがとうございます。

でも、アドレスをhttp:// ではじまる完全URLに変えましたが、
やはりエラーになってしまいます。
ちなみに下のようなlocationだけのプログラムもエラーになります。

プログラムが間違えていないとすれば、
なにか他に原因は考えられますでしょうか?

---------------------------------------------
#!/usr/bin/perl

print "Location:http://xxx/index.html\n\n";

補足日時:2001/06/30 00:11
    • good
    • 0
この回答へのお礼

ちょっと気づいたことがあるのですが、
どこに書けばいいのかわからなかったのでお礼のところに書きます。
inoue64さんすいません。

私の使っているサーバーは、「とくとく」という無料のレンタルサーバー
なのですが、ここはCGIにも自動で上下に埋め込みの広告が表示されます。
もしかするとこれが原因でしょうか?
だとするとこのサーバーでは、locationは使えないという事ですよね。

とくとくサーバーを利用していて、locationを使えた方が
いらっしゃいましたら教えてください。お願いします。

お礼日時:2001/06/30 12:38

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