アプリ版:「スタンプのみでお礼する」機能のリリースについて

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>を入れて移動させるようにしてみたんですけど、もっと正攻法があるんじゃないかな?と、疑問を感じました。
申し訳ありませんが、教えていただけると嬉しいです。

A 回答 (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で飛ばすより、早くページが表示されます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/03/14 20:48

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")'>
    • good
    • 0

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!