下記のようにするとクッキーが使えない端末で無限ループしそうです。
良い方法があれば教えてください。よろしくお願いします。
cookie.php
<?php
// クッキーが定義されてなければ定義する
if(!isset($_COOKIE['dmy'])){
$_COOKIE['dmy'] = 'クッキーが使えるよ';
header('Location: cookie.php');
exit;
}
?>
リダイレクト先にGETパラメータを付けて、GETパラメータの有無をチェックすれば無限ループしません。
cookie.php
<?php if( !isset($_COOKIE['dmy']) && !isset($_GET['visited']) ){ $_COOKIE['dmy'] = 'クッキーが使えるよ'; header('Location: cookie.php?visited=1'); exit; } ?>
PHPだけを使用して1回のアクセスで
クッキーが使用できるかどうかを知る方法はありません。
質問文のままだと、もちろん無限ループになります。
header('Location: cookie.php');
でリダイレクトしてるので、これが2回目のアクセスになるわけですね。
回答者1の方法が一般的です。
PHP辞典 第2版 (DESKTOP REFERENCE)
西沢 直木
にも同じようなロジックが載っています。
ネットでも、
http://www.phppro.jp/qa/1159
http://blog.olivesystem.com/388.html
ように、似たようなロジックが紹介されています。
ご回答ありがとうございます!
URLの方を拝見しました。参考にさせて頂きます。
ご回答ありがとうございます!
2012/08/31 10:12:22やはりリダイレクトするのが一般的なんですね。