結果を得て自動的にページ移動を行うには?

このQ&Aのポイント
  • CGIプログラムの初心者です。取り合えず作ってみようと思いまして、本を片手に「診断系の占い」のプログラムを書き始めました。生年月日を入力して性格を占う(?)、いわゆる「動物占い」とか「星座占い」のようなやつです。
  • 入力した生年月日から数値を導き、その数値を元に数通り用意した結果のページ(HTML)へ移動させるようにしたいのですが、移動のさせ方がよくわかりません。CGIの中にHTML文書を書いて表示させるのではなくて、別に用意したHTMLのページへ移動させるにはどうしたらいいのでしょうか?
  • とりあえず print "Content-type: text/html "; print <<EOF; <html> <head> <meta HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=$kekka\"> <title>占いの結果です</title> </head> #以下略します #$kekka ←この変数にアドレスを代入してます。 という感じで、<meta>を入れて移動させるようにしてみたんですけど、もっと正攻法があるんじゃないかな?と、疑問を感じました。 申し訳ありませんが、教えていただけると嬉しいです。
回答を見る
  • ベストアンサー

結果を得て自動的にページ移動を行うには?

CGIプログラムの初心者です。取り合えず作ってみようと思いまして、本を片手に「診断系の占い」のプログラムを書き始めました。生年月日を入力して性格を占う(?)、いわゆる「動物占い」とか「星座占い」のようなやつです。 入力した生年月日から数値を導き、その数値を元に数通り用意した結果のページ(HTML)へ移動させるようにしたいのですが、移動のさせ方がよくわかりません。CGIの中にHTML文書を書いて表示させるのではなくて、別に用意したHTMLのページへ移動させるにはどうしたらいいのでしょうか? とりあえず print "Content-type: text/html\n\n"; print <<EOF; <html> <head> <meta HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=$kekka\"> <title>占いの結果です</title> </head> #以下略します #$kekka ←この変数にアドレスを代入してます。 という感じで、<meta>を入れて移動させるようにしてみたんですけど、もっと正攻法があるんじゃないかな?と、疑問を感じました。 申し訳ありませんが、教えていただけると嬉しいです。

  • CGI
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

別にその方法でもいいと思いますが、その他には「Locationヘッダでリダイレクトさせる」方法や「結果ページのHTMLを読み込んで表示する」方法などが考えられます。 Location の場合、  print "Location: $kekka\n\n"; とだけ出力すればOKです。 META の Refresh による方法と、ほぼ同じ結果になります。 ※$kekka は、念のため絶対URLの方がよいです。 HTMLを読み込んで表示するなら、  print "Content-Type: text/html\n\n";  if (open(FH, "< $file")) {  # $fileには、$kekkaに相当するHTMLのファイルパスを指定    print <FH>;    close FH;  }  else { print "Error: $!" } という感じ。 こっちの方がMETAやLocationで飛ばすより、早くページが表示されます。

Tenshi_7
質問者

お礼

色々やり方があるんですね。 早速やってみます。 ありがとうございました♪

その他の回答 (2)

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.3

ごめんなさい、回答No2は勘違いでした。

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.2

JavaScriptの  "document.URL" を使うとできます。 URLは大文字であることに注意。 使用例: <script> function jump(url){document.URL=url} </script> <input type=button value=" 1 " onclick='jump("1.html")'> <input type=button value=" 2 " onclick='jump("2.html")'>

関連するQ&A

  • cgiでメタタグを使用するにはどうすればいいですか

    htmlでメタタグ <meta http-equiv="refresh" content="4;URL=#.html"> と、4秒でURLにジャンプしています(URLは略)。 cgiサイトもあり、cgiでも、4秒でURLにジャンプしたいです。 print "Content-type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<meta http-equiv="refresh" content="4;URL=#.html">\n"; print "</head>\n"; print "</html>\n"; print "と\n";で単純に挟んでいますが、エラーになってしまいました。 メタタグには、特殊な書き方があるのでしょうか?

    • ベストアンサー
    • CGI
  • CGIから移動したページでのリンク元URLの取得について

    CGIから移動したページでのリンク元URLの取得について CGIのHTML表示部を print<<End_of_Data; <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="5;URL=http;//example.com/index.html" /> <title>認証OK</title> </head> <body>会員ページに移動します</body> </html> End_of_Data としています。 5秒後にリダイレクト先のexample.comに移動するようにしているのですが、 このリダイレクト先でリンク元を取得することができません。 リンク元URLを取得するにはどうしたらよろしでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • HTMLの画像自動更新について

    現在、 <meta http-equiv="Refresh" content="5">で自動更新をしているのですが、 毎回同じ画像が表示されてしまいます。 F5を押すと画像は更新されます。 キャッシュに問題があるのではと調べて下記のように書きました。 <HTML> <HEAD> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Pragma" content="no-cache"> <meta equiv="Expires" content="-1"> <meta http-equiv="Refresh" content="5;URL=index_i_i.html"> URLの「index_i_i.html」は同じHTMLファイル(名前は変えて)を用意して交互に飛ぶように設定しました。 ですが、上記の記述でも同じ画像が表示されます。 F5では更新されるのですが、F5と同じ更新をHTML内に記述するにはどうしたらよろしいのでしょうか? できれば、CGIやスクリプトは使いたくないのですが、使わなくてはいけないのであれば、教えてください。 お願いします。

    • ベストアンサー
    • HTML
  • メールフォーム

    print "Content-type: text/html\n\n"; print "<HTML><HEAD><TITLE>Thank you!</TITLE></HEAD>\n"; print "<BODY bgcolor=\"#DEB887\">\n"; print "<H2 align=\"center\">メール送信完了!</H2>\n"; print "<HR>\n"; print "<P>\n"; print " しばらくお待ちください。\n"; print "</BODY></HTML>\n"; CGIでメールフォームを作成してて、送信後の画面はこんな感じにしてるのですが、 meta http-equiv="refresh" content="5;url=sample.html 5秒後に自動でTOPページへ持っていくようにしたいのですが、これはどこに入れたらいいんでしょうか?

    • ベストアンサー
    • CGI
  • CGIでリンクさせたページを同一のページ内の iframe に表示させるには

    CGIでリンクさせたページを同一のページ内の iframe に表示させるにはどうしたらいいでしょうか? ちなみにCGIは -------------------- #!/usr/bin/perl $querybuffer = $ENV{'QUERY_STRING'}; @pairs = split(/&/,$querybuffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); if( $name eq "jumpto" ) { $jumpto = $value; # 移動先 } } if( $jumpto ne "-" ) { print "Location: $jumpto\n\n"; } else { print "Content-type: text/html\n\n"; print qq|<HTML>\n<HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=Shift_JIS">\n<TITLE>移動先が未指定です</TITLE></HEAD>\n|; print qq|<BODY><H1>移動先が選択されていません。</H1><P>移動先を選択してからボタンをクリックして下さい。</P></BODY>\n|; } exit; ------------------ です。 iframe部分は以下のようにしています。 <iframe src="index.html" height=200 width=460> この部分は iframe 対応のブラウザで見てください。 </iframe>

    • ベストアンサー
    • CGI
  • ブラウザの戻るができないようにしたい

    ページ内はHTMLファイルですが、そのページのiframe内にperlで動的ページを表示させています。 クリック自体はifream内の動的ページですが、ページのキャッシュが残っているらしく、ブラウザの戻るが有効になります。 戻るができないようにしたいのですが何か良い方法はありますか? 以下、効果はありませんでした。 ファイル1 test.html <html> <head> <title>HTML</title> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="Fri, 31 Dec 2004 23:59:59 GMT"> </head> <body> <ifream src="test.cgi"></ifream> </body> </html> ファイル2 test.cgi print "Content-type: text/html\n"; print "Pragma: no-cache\n"; print "Cache-Control: no-cache\n"; print "Expires: Thu, 01 Dec 1994 16:00:00 GMT\n\n"; print <<EOT; <html> <head> <title>CGI</title> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="Fri, 31 Dec 2004 23:59:59 GMT"> </head> <body> <a href="test.cgi">sample</a> </body> </html> EOT exit;

    • ベストアンサー
    • Perl
  • CGIで作ったHTMLの文字化けについて

    CGIのヘッダを "Content-type: text/html\n\n" として、HTMLをブラウザに出力するcgiを作っているのですが、 「表示」という文字が「侮ヲ」と文字化けしてしまいます。 HTMLの<head></head>内には print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=shift-jis\">"; と記述して日本語を指定しています。 文字化けの原因がまったくわかりません。 心当たりありませんでしょうか?

    • ベストアンサー
    • Perl
  • 指定ページに自動でジャンプができません

    例えば、http://abc.co.jp/に自動でジャンプしたい場合ですが、 ホームページビルダーV6.5で !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="refresh" content="2;URL=" http://abc.co.jp/"> <META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 6.5.0.0 for Windows"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE></TITLE> </HEAD> <BODY background="w2b.gif"> <DIV style="top : 132px;left : 127px; position : absolute; z-index : 1; " id="Layer1"><IMG src="newimage2.gif" width="98" height="19" border="0"></DIV> </BODY> </HTML> と入力したのですが、指定のサイトにジャンプ出来ません。 どこがいけないのでしょうか? また、どうしたら良いか教えて下さい!!

    • ベストアンサー
    • HTML
  • metaタグについて

    Perl-CGIを利用しています。 今はa.cgi print "<meta http-equiv='Refresh'content='0;URL=b.cgi?\n\n'>"; これにa.cgiで取得した$strをb.cgi側で利用したいのですがうまく引っ張っていくことができません。 どうしたらよいでしょうか・・・

    • ベストアンサー
    • CGI
  • ウェブページのHTMLの記述によるリダイレクトの設定方法

    ホームページビルダー13なのですが、 運営しているWEBサイトのアドレスが変わるために、 ウェブページのHTMLの記述によるリダイレクトの設定方法『<meta http-equiv="Refresh" content="0;URL=新アドレス">』をHTMLの<head>内に記述して保存すると 強制的に『<META http-equiv="Refresh" content="0;URL=UTF-8">』と新アドレス部分がUTF-8とかってに書き換えてしまいます。どうしたら書き換えずに保存できるのでしょうか。よろしくお願いいたします。