• 締切済み

訪問回数ごとに違うページを表示させるには

クッキーを利用して、訪問回数ごとに違うページを表示(ランダムではなく順番に表示)させ、最後のページまで表示させたらまた最初のページから順番に表示させる、この処理をループさせたいのですが、書き方がわかりません。 例えば、表示させたいページが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>

みんなの回答

  • Suzi
  • ベストアンサー率38% (130/334)
回答No.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);

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

#1さんの回答にあった D.html~G.html は質問者さんの投稿に登場しません。 $num % 3 の値によってジャンプ先(A.html, B.html, C.html)を 変える必要があるのではないでしょうか。

vdrop
質問者

お礼

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

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

$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> では、どうでしょうか。

vdrop
質問者

補足

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・・・・と最初に戻って表示させるにはどうしたらよいでしょうか。 何度もすみませんが、ご回答頂けたら助かります。 よろしくお願いいたします。

関連するQ&A