人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでの質問です。

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

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

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

●質問者: quocard
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● DOK
●50ポイント

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


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


quocardさんのコメント
意図としては間違っていないのですが、locationで再度アクセスを行っているので「初回」ではないですね。 回避方法としてlocationで紹介されている場合が多いので検討はしてみます。 ありがとうございました。

2 ● shell631
●50ポイント

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

quocardさんのコメント
一旦自スクリプトを呼び出すのはいいですね。 外部化してしまえばラクそうですし。 ありがとうございます。 参考にさせていただきます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ