携帯でcookieが利用できるかどうかを確認したいのですが、javascriptが使用できないので
PHPのsetcookieで確認できればと考えています。
しかしsetcookieの場合はセット直後は値が設定されず、次のアクセスから有効になるので
初回のアクセス時にsetcookieを使用しただけだとcookieが利用できるかどうかの判断ができません。
初回のアクセス時にjavascriptを使用せずにブラウザーでcookieが利用可能かどうかの判断を行う方法があればアドバイスいただけないでしょうか。
こういうことですか?
違ったらすみません。
if ( isset( $_GET['cookie'] ) && $_GET['cookie'] ) {
if ( isset( $_COOKIE['valid'] ) && $_COOKIE['valid'] ) {
print "Cookie は使えます";
} else {
print "Cookie は使えません";
}
} else {
setcookie( 'valid', '1' );
$url = sprintf( 'http://%s%s?cookie=check’, $_SERVER['SERVER_NAME'], $_SERVER['SCRIPT_NAME'] );
header("Location: $url");
exit;
}
?>
PHPで以下のような関数iscookieを用意して、初回呼び出し時は自スクリプトをコールするようにしてはどうでしょう。
<?php function iscookie() { $myself = basename($_SERVER['SCRIPT_NAME']); if (!isset($_GET['check'])) { setcookie('DUMMY', TRUE); header("Location: {$myself}?check"); //送信 } else { $cookie = $_COOKIE['DUMMY']; //取得 $ret = $cookie ? TRUE : FALSE; setcookie('DUMMY', '', time() - 3600); //消去 } return $ret; } echo iscookie() ? 'cookie ON' : 'cookie OFF'; ?>
一旦自スクリプトを呼び出すのはいいですね。
外部化してしまえばラクそうですし。
ありがとうございます。
参考にさせていただきます。
意図としては間違っていないのですが、locationで再度アクセスを行っているので「初回」ではないですね。
2012/03/21 10:51:46回避方法としてlocationで紹介されている場合が多いので検討はしてみます。
ありがとうございました。