結果を得て自動的にページ移動を行うには?
- 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>を入れて移動させるようにしてみたんですけど、もっと正攻法があるんじゃないかな?と、疑問を感じました。 申し訳ありませんが、教えていただけると嬉しいです。
- Tenshi_7
- お礼率73% (22/30)
- CGI
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
別にその方法でもいいと思いますが、その他には「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で飛ばすより、早くページが表示されます。
その他の回答 (2)
- wolv
- ベストアンサー率37% (376/1001)
ごめんなさい、回答No2は勘違いでした。
- wolv
- ベストアンサー率37% (376/1001)
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とかってに書き換えてしまいます。どうしたら書き換えずに保存できるのでしょうか。よろしくお願いいたします。
- ベストアンサー
- ホームページ作成ソフト
お礼
色々やり方があるんですね。 早速やってみます。 ありがとうございました♪