dポイントプレゼントキャンペーン実施中!

クッキーを利用して、訪問回数ごとに違うページを表示(ランダムではなく順番に表示)させ、最後のページまで表示させたらまた最初のページから順番に表示させる、この処理をループさせたいのですが、書き方がわかりません。
例えば、表示させたいページがA~C.htmlの3ファイルだった場合、一回目の訪問はA.htmlを表示、2回目の訪問はB.htmlを表示、3回目の訪問はC.htmlの表示、4回目の訪問はまた最初に戻ってA.htmlを表示、5回目の訪問はB.htmlを表示、6回目の訪問はC.htmlを表示、7回目の訪問はまた最初に戻ってA.html・・・というような処理をループさせたいのです。
下記ソースを応用したいのですが、どの部分をどう変更したらよいのか、どなたか教えて頂けませんか?よろしくお願いいたします。

このソースは、訪問回数によってテキストが表示されるというものですが、今回はテキストを表示させるのではなく訪問回数によって用意したページに直接飛ばしたいのです。
<?php header("Content-Type:text/html;charset=Shift_JIS"); ?>
<?php
$cookie = "repeaters"; // Cookieの名前
$period = time() + 365*24*3600; // Cookieの有効期限(サンプルは1年)

if(isset($HTTP_COOKIE_VARS[$cookie])) {
$num = (int)$HTTP_COOKIE_VARS[$cookie];
$num++;
}
else $num = 1;
setcookie($cookie, $num, $period);
?>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
if($num == 1) echo "初めての訪問ありがとうございます";
else echo "今回で".$num."回目の訪問になります";
?>
</BODY>
</HTML>

A 回答 (3件)

>>8回目に訪問した人からまた順番にA.html,B.html,C.html・・・・


>>と最初に戻って表示させるにはどうしたらよいでしょうか。
 上記の例の場合、$num が8、つまり8回目の訪問の時には初訪問の1にすれば良いので、
 vdropさんの式なら、

・・・・・・
・・・・・・
$num++;
}
else $num = 1;

if( $num >= '8' ) $num = '1';
setcookie($cookie, $num, $period);
    • good
    • 0

#1さんの回答にあった


D.html~G.html
は質問者さんの投稿に登場しません。

$num % 3
の値によってジャンプ先(A.html, B.html, C.html)を
変える必要があるのではないでしょうか。
    • good
    • 0
この回答へのお礼

asuncionさん、ご回答ありがとうございました!
A.html~C.htmlは例えですので、D.html~G.htmlであっても問題ありません。

お礼日時:2009/04/05 00:49

$numに訪問回数なので



$top_html = '';

if( $num <= '1') $top_html = './welcome/A.html';
else if( $num <= '2') $top_html = './welcome/B.html';
else if( $num <= '3') $top_html = './welcome/C.html';
else if( $num <= '4') $top_html = './welcome/D.html';
else if( $num <= '5') $top_html = './welcome/E.html';
else if( $num <= '6') $top_html = './welcome/F.html';
else if( $num >= '7') $top_html = './welcome/G.html';


<HTML>
<HEAD>
<TITLE></TITLE>
<meta http-equiv ="refresh" content="0; url= $top_html">
</HEAD>
</html>

では、どうでしょうか。

この回答への補足

Suziさん、アドバイスありがとうございます!

$top_html = '';

if( $num <= '1') $top_html = './welcome/A.html';
else if( $num <= '2') $top_html = './welcome/B.html';
else if( $num <= '3') $top_html = './welcome/C.html';
else if( $num <= '4') $top_html = './welcome/D.html';
else if( $num <= '5') $top_html = './welcome/E.html';
else if( $num <= '6') $top_html = './welcome/F.html';
else if( $num >= '7') $top_html = './welcome/G.html';

↑このソースは下記のどの部分に追記したらよいでしょうか?

<?php header("Content-Type:text/html;charset=Shift_JIS"); ?>
<?php
$cookie = "repeaters"; // Cookieの名前
$period = time() + 365*24*3600; // Cookieの有効期限(サンプルは1年)

if(isset($HTTP_COOKIE_VARS[$cookie])) {
$num = (int)$HTTP_COOKIE_VARS[$cookie];
$num++;
}
else $num = 1;
setcookie($cookie, $num, $period);
←この部分に追記でOKでしょうか?
?>

また、Suziさんのソースで、8回目に訪問した人からまた順番にA.html,B.html,C.html・・・・と最初に戻って表示させるにはどうしたらよいでしょうか。

何度もすみませんが、ご回答頂けたら助かります。
よろしくお願いいたします。

補足日時:2009/04/05 00:35
    • good
    • 0

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