• ベストアンサー

Locationを使いたいのですが

はじめて質問します。よろしくお願いします。 フォームからデータを受け取って、なんらかの処理をしてから、 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; }

質問者が選んだベストアンサー

  • ベストアンサー
  • bero
  • ベストアンサー率40% (2/5)
回答No.2

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

参考URL:
http://www23.tok2.com/home/FAQ/cgi1.html#Location
mirurin
質問者

お礼

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

その他の回答 (1)

  • inoue64
  • ベストアンサー率29% (334/1115)
回答No.1

Location: のアドレスをhttp:// から始まるアドレスにしたほうが いいかもしれません。

参考URL:
http://tohoho.wakusei.ne.jp/wwwcgi3.htm
mirurin
質問者

お礼

ちょっと気づいたことがあるのですが、 どこに書けばいいのかわからなかったのでお礼のところに書きます。 inoue64さんすいません。 私の使っているサーバーは、「とくとく」という無料のレンタルサーバー なのですが、ここはCGIにも自動で上下に埋め込みの広告が表示されます。 もしかするとこれが原因でしょうか? だとするとこのサーバーでは、locationは使えないという事ですよね。 とくとくサーバーを利用していて、locationを使えた方が いらっしゃいましたら教えてください。お願いします。

mirurin
質問者

補足

ご回答ありがとうございます。 でも、アドレスをhttp:// ではじまる完全URLに変えましたが、 やはりエラーになってしまいます。 ちなみに下のようなlocationだけのプログラムもエラーになります。 プログラムが間違えていないとすれば、 なにか他に原因は考えられますでしょうか? --------------------------------------------- #!/usr/bin/perl print "Location:http://xxx/index.html\n\n";