• 締切済み

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

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

  • vdrop
  • お礼率33% (1/3)
  • PHP
  • 回答数3
  • ありがとう数1

みんなの回答

  • 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% (2126/6288)
回答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

  • Cookieの値の取得

    お世話になっています。 Cookieの値の取得について疑問がありますので、どなたか教えていただけないでしょうか? ------------------------------------------------------- /test/test1.php の中に <? setcookie ("test" , "hogehoge" ,time() + 86400 * 30); ?> ------------------------------------------------------- /test/test2.php の中に <? echo $HTTP_COOKIE_VARS[test]; ?> ------------------------------------------------------- /test2/test3.php の中に <? echo $HTTP_COOKIE_VARS[test]; ?> ------------------------------------------------------- というファイルを作成しました。(test3.phpのみ階層が違います) まず始めにtest.phpを表示させて、Cookieの情報を保存させます。 次にtest2.phpを表示させると、Cookieの情報を取得することが できますが、test3.phpを表示させると、Cookieの情報を取得すること ができません。これは、なぜなのでしょうか?また、取得する方法 はあるのでしょうか(無いわけは無いと思いますが・・・)? 以上です よろしく、お願い致します。 teraum

    • ベストアンサー
    • PHP
  • 訪問回数で表示するFLASHを変える

    TOPページにFLASHコンテンツを設置しているのですが、初回訪問時と2回目以降の訪問で表示するFLASHを違ったものにしたいと思っています。 JAVAScriptとcookieを利用すれば出来そうな気はするのですが、どちらも利用したことがなくちんぷんかんぷんで困っています。 利用できそうなサンプルなどありましたら教えて下さい。

    • ベストアンサー
    • CSS
  • ホームページにタイマーと訪問回数を表示したい

    お世話になります。 ホームページにタイマーと訪問回数を表示したいと考えております。 タイマーはよくある「あと○日と○時間」というようなものではなく、 そのページを開いたときから「あと60分00秒」をカウントダウンさせていきたいです。 又、訪問回数はその人がそのページに来たのが何回目かを表示させたいです。 このようなことは出来るものでしょうか? どうぞ宜しくお願いいたします。

  • グーグルアドセンス「ページの表示回数」の疑問

    グーグルアドセンスでページの表示回数とありますが、これはサイトのページビューや訪問者数と近い数字にならないのでしょうか? 私は四つくらいブログを持っておりますが、四つの合計で訪問者数200人、ページビュー500のときでも、アドセンスの「ページの表示回数」は35とかです。 ページが開かれる度に、ページの表示回数は増えるのではないのでしょうか?

  • cookieのログアウト処理

    setcookieを使って、cookieを取得させ、持っている人のみが見れるサイトを作りました。 しかし、ログアウトボタンの作り方がわからなくて悪戦苦闘しています。 ログインページをPHPで作って、ログインと同時にcookieを持たせて、 中のページ($HTTP_COOKIE_VARSを読ませるためだけに拡張子はphpですが基本HTML)に引っ張っています。 その中のページからログアウト(cookieを削除)させるにはどうしたらよいのでしょうか? すみませんが、お願いします。

    • 締切済み
    • PHP
  • 訪問した回数の表示♪

    HPに 来訪者が あったときに トップページに  「12回目のご訪問ありがと~♪  あなたは、「○○○」だよっ    最後に見にきた日     2003/2/16 17:17    前回の訪問から0日1時間0分過ぎました。」  のような 表示を みかけますが この 出し方の  方法を 教えてください  しろうとなので HTMLを コピーして 使いたいと 思っています

  • アドセンスのページ表示回数

    お世話になっています。 このたび、ホームページを作成しまして、アドセンスも登録しました。 細々ながらも順調でしたが、先ほどチェックしましたところ、HPに設置したカウンターは、20人ほど増えているのですが、アドセンスのレポートのページ表示回数は4しか増えていません。 これはなぜでしょうか? ・HPのカウンターは、同じ人はカウントしないようにしています。 ・宣伝したHPのURLをクリックすれば、広告ページも表示されるように作成しています。 何か原因があるのでしょうか? それとも、「ページの表示回数」というのは、カウンターとは新規の訪問者をカウントしているわけではないのでしょうか? お分かりになる方がいましたら、よろしくお願いします。

  • ページ切り替え機能について

    現在ページの切り替えで<最初|1|2|3|4|5|6|7|8|9|10|最後>という風に作っています。例えば32ページ目が終わりなのに33ページ目以降も表示されてしまいます。PHP4で次のように書いています。 どうすれば良いでしょうか? <? $j=floor($count/10);//ページ数(10項目づつ表示) print "<"; ?> <a href="./a.php?start_num=0>最初|</a> <? for($i=$start_num ;$i<=$start_num+9; $i++){ if($start_num<$j){ ?> <a href="./a.php?start_num=<?=$i ?>"><?=$i+1 ?>|</a> <? } } ?> <a href="./a.php?start_num=<?=$j ?>">最後</a> <? print ">"; ?> 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPで違うサーバーのスクリプトでクッキーを読めますか?

    サーバーAで次のようにクッキーを設定しました。 test.php <? setcookie("TEST","値"); ?> サーバーBで次のようにクッキーを読み込み ました。 test2.php <? $kekka=$HTTP_COOKIE_VARS["TEST"]; print $kekka; ?> 構想は、「値」と表示させることなのですが、 何も表示されませんでした。 上記は、何が間違えているでしょうか? どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPとMysqlのページ分割表示について

    以前こちらで質問させて頂きまして htmlの検索フォームから入力した情報をデータベースから引っ張ってきて 表示するまでは出来たのですが、表示制限を10個にして、次のページ、前のページと移動させるようなシステムにしたいのですが、うまくいきません(エラーが出てしまいます) どうか、お力をお貸し願えないでしょうか。 search.html <html> <head><title>検索</title></head> <body> <form action="/search/"method="post"> /*page_numを入れた*/ <input type="hidden" name="page_num" value="0"> <li>会社名</li> <li><input type="text"name="name"></li> <li>電話番号</li> <input type="text"name="phone" maxlength="11"> <input type="submit" name="submit" value="検索"> </body> </html> index.php(データベースから情報を引っ張り出す) <?php $host="localhost"; if(!$conn=mysql_connect($host,"usr","passwd")){ die("データベース認証エラー.<br />"); } mysql_select_db("usr",$conn); $condition=""; if(isset($_POST["name"])&&($_POST["name"]!="")){ $name=mysql_real_escape_string($_POST["name"]); $name=str_replace("%","\%",$name); $condition="WHERE name LIKE \"%".$name."%\""; } if(isset($_POST["phone"])&&($_POST['phone']!="")){ $phone=mysql_real_escape_string($_POST["phone"]); $phone=str_replace("%","\%",$phone); if($condition==""){ $condition="WHERE phone LIKE \"%".$phone."%\""; }else{ $condition.="AND phone LIKE \"%".$phone."%\""; } } $tmp=$page_num*10; $sql="SELECT * FROM table".$condition."ORDER BY id limit".$tmp.",10"; while($row=mysql_fetch_array($res)){ print("<table border=\"1\">"); print("<tr><td>会社名</td><td>電話番号</td></tr>"); print("<tr>"); print("<td>".$row['name']."</td>"); print("<td>".$row['phone']."</td>"); print("</tr>"); print("</table>"); } $cnt=$row[0]; //ページ表示 if(!$cnt>10){ echo ceil($cnt/10), "ページの中の",$page_num+1,"ページ目を表示<br>"; } //前の10件 if ($page_num!=0){ echo "<a href=index.php?name=",$name,".$page_num -1.">"; echo "&lt</a>; echo "前の10件"; } //次の10件 if (($page_num+1)*10<$cnt){ echo "<a href=index.php?name=",$name,".$page_num +1.">"; echo "次の10件"; echo "&g</a>t"; } mysql_free_result($res); //データベースから切断 mysql_close($conn); ?> ちなみにエラーが出ている行はここの //前の10件 if ($page_num!=0){ echo "<a href=index.php?name=",$name,".$page_num -1.">"; echo "&lt</a>; echo "前の10件"; } >>echo "&lt</a>; この部分がエラーになっています。

    • ベストアンサー
    • PHP

専門家に質問してみよう