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を返す。
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を返す。
コメント