• 締切済み

CGI作動後に、元いたページ(商品によって違う)に戻るにはどうすればいいでしょうか?

CGIでメルマガ会員登録のページを作りました。 登録後にサンキューページに行く設定にしてますが、その後自動的に元いたページに戻るようにしたいと思ってます。この場合どのようなタグを入れればいいのでしょうか?

みんなの回答

  • n31792
  • ベストアンサー率31% (5/16)
回答No.4

そのようなことでしたらCGIの環境変数で $ENV{'HTTP_REFERER'} と書くとリンク元のURLがわかります。 サンキューページから自動的に戻るということは表示して指定秒数後に戻るということでしょうので、metaタグを使えばOKです。 ということは、CGIのサンキューページのHTMLを出力するところ、たとえば(文字コードがShift_JISという前提です) <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <title>登録完了しました</title> </head> <body>登録ありがとうございました!</body> </html> とかあるでしょうけど、そこを <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Refresh" content="**;URL=​$ENV{'HTTP_REFERER'}">​ <title>登録完了しました</title> </head> <body>登録ありがとうございました!</body> </html> とすればいいです。**の部分には何秒後に移動するか書いて下さい(10秒だったら 10) ただし、こうするといたずらとかで他サイトに登録フォームが設置されるとすると(ないだろうけど)そこに戻りますので相応しくないなら、登録処理のとこらへんに unless ( $ENV{'HTTP_REFERER'} =~ /^*****/ ) { print "Content-Type: text/html\n\n"; print <<"EOM"; <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> <title>メルマガ登録・エラー</title> </head> <body> <p>リンク元が不正です</p> </body> </html> EOM exit(0); } とCGIの中にいれて下さい。*****には登録フォームがあるところやあなたのサイトのindex.html等を抜いたTOPページなどの最短アドレスなど許可するリンク元を記入して下さい。ただし、 http://abcdefg.com/abc/ でしたら http:\/\/abcdefg.com\/abc\/ などと/の前に\を入れてやらないと内部サーバーエラーをおこしますから注意して下さい。 こうすることでフォームに手を加えなくてもCGI側がやってくれるので便利かと思います。

  • Suzi
  • ベストアンサー率38% (130/334)
回答No.3

CGIへ行く時に、そのページのURLを、 <imput type=hidden name=back_url value="../doc/hoge.html"> にしてCGIに渡し、ANo.2さんがおっしゃっているところに渡せば良いと思います。

  • o84
  • ベストアンサー率31% (128/407)
回答No.2

あと。このタグは<head>の中に書きます。 こんな感じです。 <html> <head> <meta http-equiv="Refresh" content="10;URL=​http://hoge.com/"> </head> <body> ご登録ありがとうございました! 10秒後に元の画面に戻ります。 </body> </html>

yanas123
質問者

お礼

回答ありがとうございます。 元いたページはどのように指定すればいいのでしょうか? 指定したページへなら戻ることができるのですが、 元いたページは商品説明のページや、ご案内のページなど、 不特定のページでして、元のページへ戻る方法がわからないのです。

yanas123
質問者

補足

回答ありがとうございます。 元いたページはどのように指定すればいいのでしょうか? 指定したページへなら戻ることができるのですが、 元いたページは商品説明のページや、ご案内のページなど、 不特定のページでして、元のページへ戻る方法がわからないのです。

  • o84
  • ベストアンサー率31% (128/407)
回答No.1

CGIで「元いたページ」情報を取得しておいて、 サンキューページを書き出した時に 「元いたページ」へ移動するタグを書くんですね。 <meta http-equiv="Refresh" content="10;URL=http://hoge.com/"> を使います。 10秒後に、http://hoge.comに移動します。 http://hoge.comの部分にもといたページのURLを書きましょう。