- ベストアンサー
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; }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
いちどHTMLを出力し、<META HTTP-EQUIV='Refresh' CONTENT='秒数;URL=http://~~'> で飛ばすしかないようです。
その他の回答 (1)
- inoue64
- ベストアンサー率29% (334/1115)
Location: のアドレスをhttp:// から始まるアドレスにしたほうが いいかもしれません。
お礼
ちょっと気づいたことがあるのですが、 どこに書けばいいのかわからなかったのでお礼のところに書きます。 inoue64さんすいません。 私の使っているサーバーは、「とくとく」という無料のレンタルサーバー なのですが、ここはCGIにも自動で上下に埋め込みの広告が表示されます。 もしかするとこれが原因でしょうか? だとするとこのサーバーでは、locationは使えないという事ですよね。 とくとくサーバーを利用していて、locationを使えた方が いらっしゃいましたら教えてください。お願いします。
補足
ご回答ありがとうございます。 でも、アドレスをhttp:// ではじまる完全URLに変えましたが、 やはりエラーになってしまいます。 ちなみに下のようなlocationだけのプログラムもエラーになります。 プログラムが間違えていないとすれば、 なにか他に原因は考えられますでしょうか? --------------------------------------------- #!/usr/bin/perl print "Location:http://xxx/index.html\n\n";
お礼
なるほど、わかりました。 どうもありがとうございました。