• ベストアンサー

訪問者のクッキーが有効か無効かを調べるには?

1ページ目にsetcookieで2ページ目にif($_COOKIE)で調べることはできますが 1ページ目で訪問者がクッキーが有効になっているかどうかを調べ、無効になっている場合は無効の人専用のページを表示させてクッキーを有効にするように促したいです。 ご教示頂けると幸いです。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.1

・何もない、1ページ目を作る。 ・クッキーをセット ・即2ページ目へリダイレクトする。(フォーワードではダメですよ。) ・2ページ目にてクッキーをチェック。目的のページを生成  で、どうですか?ユーザーから見れば一見、1ページ目でクッキーがチェックされているように見えます。動作が重くなるとバレバレになりますけどね。(アドレスをちゃんと見ても一目瞭然。)  2ページ目をブックマークされると動作不良になりかねないので、2ページ目からアクセスされた時、1ページ目に戻すか、クッキーの内容から、このまま動作を続行するかの判断はロジックとして作り込む必要があります。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.2

この機能を個別に実装していくのはページが増えれば増えるほど大変ですよ。 フレームワークを利用される方が結果的に制御が簡単になると思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • クッキーの削除方法

    PHP5にて以下のようにクッキーを連想配列でセットしています。 setcookie("cookie[1]", "10", time()+600); setcookie("cookie[2]", "20", time()+600); setcookie("cookie[10]", "100", time()+600); この場合、一部のクッキー(例えばcookie[2]で設定したもの) だけを削除するにはどうすれば宜しいのでしょうか? 試しに以下の様に記述してみましたが、上手く削除されませんでした。 setcookie("cookie[2]"); また、全てのクッキー(全ての連想配列)を いっぺんに削除する方法もありましたら、お教えください。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 訪問回数ごとに違うページを表示させるには

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

    • 締切済み
    • PHP
  • クッキーに関して

    こんばんは。お世話になっております。 ここ1~2週間ほどクッキーについて学んでいるのですが、開発環境と実際のweb上での動きに違いが見られ、何がどう違うのか?が見えなくなってしまいました。下記に現状を書き留めますのでご指導頂けたら幸いに思います。 $addr = $_SERVER['REMOTE_ADDR']; setcookie("addr", $addr, time() + 60*60*24); setcookie("key_no", $key_no, time() + 60*60*24); 以上を設置すると、web上のサーバーにアップしたものに関しては、クッキーのファイルに、addr、key_no共に保存されるが、ローカルではクッキーファイル内にkey_noが見られない。 ブラウザを閉じた後、クッキー情報を取得するために、 if(isset($_COOKIE["addr"])){  $addr = $_SERVER['REMOTE_ADDR'];  $addr1 = $_COOKIE["addr"];   if($addr == $addr1){ として始めるものの、web上ではクッキーの取得に成功し、ローカル上ではクッキーを認識しない。 と、以上のような状況です。ソース的な不備も含め、ご指導いただきたく思います。お忙しい中恐縮ですが宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • クッキーがセットされません

    PHP初心者です。 よろしくお願い致します。 環境 レンタルサーバーを借りています PHP 5.2.9(CGI) 過去のスレッドも参考にしながら、クッキーを設定しましたが、保存されません。 ***コードはじまり*** <?php // cookie があればプラス1、無い場合は1にする if ($_COOKIE['visit']) { $count = $_COOKIE['visit'] + 1; } else { $count = 1; } setcookie("visit", $count); ?> こんにちは。 <?php print $count ;?> 回目の訪問ありがとうございます。<br> <?php print_r($_COOKIE); ?> ***コードおわり*** ***出力結果はじまり*** こんにちは。 1 回目の訪問ありがとうございます。 移動 Array ( ) ***出力結果おわり*** 何度読込なおしても、出力結果はかわりません。 よろしくお願い致します。

    • 締切済み
    • PHP
  • クッキー

    <?php setcookie(...); sleep(...); $cookiedata = $_COOKIE['...']; このようにして書き込んで間もないクッキーの値を$cookiedataに入れようとしましたがNULLが入っていました。 <?php $buf = ...; setcookie($buf); sleep(...); $cookiedata = $buf; とするのではなく、実際にクッキーから取得したいのですが、よい方法はありませんか?

    • 締切済み
    • PHP
  • FC2で、COOKIE(クッキー)が無効になっている…

    急にFC2にログインできなくなってしまいました… パスワードとIDを入力して確認ボタンを押すと、次のページで、 「COOKIE(クッキー)が無効になっている可能性があります。ブラウザーの設定を確認してください。 」と表示されます。 どうしてでしょうか… ログインできないと本当に困ります!!! ご回答よろしくお願いします。

  • クッキーについて

    setcookie('hoge')したものを、 ディレクトリー違いで$_COOKIE['hoge']したいのですが、 うまく出来ません。方法を教えて下さい。 または、認証ページで認証OKなら、 クッキーをセットして./abc/hoge.phpへ移動 認証NGならクッキーを開放して./def/hogehoge.phpへ ページ移動をさせたいです。 お手数をお掛け致しますが、宜しくお願いします。

    • 締切済み
    • PHP
  • クッキー認証>クッキー削除ができない!!

    今回は、クッキー認証画面を作成している際、 エラーが出てしまって先に進めず投稿しました。 下記にプログラム記載 ----H_01.html---------------------------------- <html> <head> <title>クッキー認証</title> </head> <body> <center> <form method="POST" action="H_02.php"> 名前<input type="text" name="name"> パスワード<input type="Password" name="pass"> cookieを記録する<input type="checkbox" name="chk"> <input type="submit" value="送信"> <input type="reset" value="リセット"> </form> </center> </body> </html> ------------------------------------------------ -----H_02.php---------------------------------- <?php $name = $_COOKIE['name']; $pass = $_COOKIE['pass']; $cnt = $_COOKIE['chk']; if ($cnt == True) { $lim = time()+7*24*60*60; //有効期限1週間 setcookie('name',$name,$lim); setcookie('pass',$pass,$lim); } else { setcookie('name'); setcookie('pass'); } ?> ------------------------------------------------ else文内の、setcookie二行にエラーが出ます。 htmlでチェックボックスにチェックが施されていない場合、クッキーを削除。 調べてみたのですが、どうしたらよいのかわからず 投稿しました。よろしくお願いします。

    • ベストアンサー
    • PHP
  • GETとクッキーの併用

    php初心者です。 今、訪問する場所からの違いによって表示するコンテンツを切り替えるというプログラムをかいています。 訪問する場所からの違いというのは リンク元に引数をもたせ(index.html?key=*****) コンテンツを切り替えるのはその引数をそのまま インクルードファイル名にさせています。 ここまではうまくいったのですが、 訪問した以降はその引数をクッキーに保存し自由に移動できるようにさせたいのですが、どうやらリンクの引数がないページに行くと クッキーが削除されているようでうまくいきません。 例えば、下階層に下ることや横に移動するリンク移動をしても、 クッキーの保存データはしっかり残っているのですが、 最初に訪問したページに「index.html?key=*****」ではなく、「index.html」でもどるとクッキーが勝手に削除されてしまうのです。 下記コードになります。 <?php $value = $_GET["key"]; setcookie("key", $value); ?> <html> <head> <body> ------------------中略------------------ <?php $html = ".html"; $path = "common/template/"; include($path.$_COOKIE["key"].$html); ?> </body> </html> setcookieに入る値を受け取った変数でなく、 静的な文字列("*********")にするとどんなことをしようが 削除されることはないのですが、、、 GET変数ではそのようなことはできないのでしょうか。 どなたかお教えいただけますでしょうか。

    • ベストアンサー
    • PHP
  • クッキーが無効のとき処理

    ブラウザの設定でクッキーが無効になっていてクッキーに保存した値を使えない場合、 初期の値をスカラー変数に代入しておきたいのですが、 if文を使ってクッキーが無効のときに特定の処理をすることってできますか。 よろしくお願いします。