PHPでの質問です。


携帯でcookieが利用できるかどうかを確認したいのですが、javascriptが使用できないので
PHPのsetcookieで確認できればと考えています。

しかしsetcookieの場合はセット直後は値が設定されず、次のアクセスから有効になるので
初回のアクセス時にsetcookieを使用しただけだとcookieが利用できるかどうかの判断ができません。

初回のアクセス時にjavascriptを使用せずにブラウザーでcookieが利用可能かどうかの判断を行う方法があればアドバイスいただけないでしょうか。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/03/16 14:41:33
  • 終了:2012/03/22 09:27:42

回答(2件)

id:DOK No.1

DOK回答回数360ベストアンサー獲得回数142012/03/16 14:55:31スマートフォンから投稿

ポイント50pt

こういうことですか?
違ったらすみません。


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;
}
?>

id:quocard

意図としては間違っていないのですが、locationで再度アクセスを行っているので「初回」ではないですね。
回避方法としてlocationで紹介されている場合が多いので検討はしてみます。

ありがとうございました。

2012/03/21 10:51:46
id:shell631 No.2

shell631回答回数9ベストアンサー獲得回数32012/03/16 16:32:50

ポイント50pt

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';
?>
id:quocard

一旦自スクリプトを呼び出すのはいいですね。
外部化してしまえばラクそうですし。

ありがとうございます。
参考にさせていただきます。

2012/03/21 18:34:16

コメントはまだありません

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません