PHPでの質問です。


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

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

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

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

回答2件)

id:DOK No.1

回答回数360ベストアンサー獲得回数14スマートフォンから投稿

ポイント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

回答回数9ベストアンサー獲得回数3

ポイント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

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

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

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

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

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