ブラウザでクッキーが使えるか判断するのに、PHPを使って1回のアクセスで判断できるんでしょうか。

下記のようにするとクッキーが使えない端末で無限ループしそうです。
良い方法があれば教えてください。よろしくお願いします。

cookie.php
<?php
// クッキーが定義されてなければ定義する
if(!isset($_COOKIE['dmy'])){
$_COOKIE['dmy'] = 'クッキーが使えるよ';
header('Location: cookie.php');
exit;
}
?>

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/09/04 19:05:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:ku__ra__ge No.1

回答回数118ベストアンサー獲得回数40

ポイント50pt

リダイレクト先にGETパラメータを付けて、GETパラメータの有無をチェックすれば無限ループしません。
cookie.php

<?php
if( !isset($_COOKIE['dmy']) && !isset($_GET['visited']) ){
	$_COOKIE['dmy'] = 'クッキーが使えるよ';
	header('Location: cookie.php?visited=1');
	exit;
}
?>
id:araishi

ご回答ありがとうございます!
やはりリダイレクトするのが一般的なんですね。

2012/08/31 10:12:22
id:taroe No.2

回答回数1099ベストアンサー獲得回数132

ポイント50pt

PHPだけを使用して1回のアクセスで
クッキーが使用できるかどうかを知る方法はありません。

質問文のままだと、もちろん無限ループになります。
header('Location: cookie.php');
でリダイレクトしてるので、これが2回目のアクセスになるわけですね。


回答者1の方法が一般的です。
PHP辞典 第2版 (DESKTOP REFERENCE)
西沢 直木
4798116238

にも同じようなロジックが載っています。

ネットでも、
http://www.phppro.jp/qa/1159
http://blog.olivesystem.com/388.html
ように、似たようなロジックが紹介されています。

id:araishi

ご回答ありがとうございます!
URLの方を拝見しました。参考にさせて頂きます。

2012/08/31 10:15:21
  • id:grankoyama
    グラ娘。 2012/08/28 20:11:50
    それでも1回とはいえないと思うんですが、セッション使えば?
  • id:zero-uhura
    zero-uhura 2012/08/29 08:08:32
    iframe<で別のphp呼び出し>とか、img<phpで生成>とか、それでも1回とはいえないなぁ、、、。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません