PHPコーディング

クッキーが有効かどうか

2012年04月01日
Webページにアクセスしてきたブラウザで、クッキーが受け入れられたかどうかチェックできないか調べてみました。
PHPより、JavaScriptの方が適切なのかもしれませんが、色々な端末・ブラウザが出てきているので、できればサーバー側で行いたいです。

クッキーをセットするのは、【setcookie】関数ですが、この関数の戻り値では、クッキーが受け入れられたかどうかは分かりません。
調べるには、
 クッキーをセット、
 いずれかのページへ遷移、
 セットしたクッキーがあるかどうかチェックするしかないようです。
クッキーセット後、ページを遷移しなくても確かめられれば楽なんですが。

function chk_cookie(){
 $strMyself = basename($_SERVER[’SCRIPT_NAME’]);
 if(isset($_GET[’mode’]) === false){
  $strGet = "?mode=check";
  foreach($_GET as $strCol => $objColVal){
   $strGet.= "&".$strCol."=".$objColVal;
  }
  @setcookie("DUMMY", "OK");
  header("Location: ".$strMyself.$strGet);
 }
 else{
  if($_COOKIE[’DUMMY’] === "OK"){
   $blnResult = true;
  }
  else{
   $blnResult = false;
  }
  @setcookie("DUMMY", "", time() - 3600);
 }
 return $blnResult;
}

$_GET[’mode’]が存在しなければ、クッキー(キー:DUMMY、値:OK)をセット、
自分自身のURLに【?mode=check】を付加して遷移(他のクエリがある場合、後ろに付加)、
$_GET[’mode’]が存在していれば、クッキーの値をチェック、キー:DUMMY=値:OKなら、クッキーを削除し、trueを返す、
クッキーがセットされていないければ、falseを返す。