戻る

クッキーからデータを読み込む

$_COOKIE、parse_str()関数

クッキーに保存されたデータの読み込みは、以下のような手順で処理します

①スーパーグローバル変数「$_COOKE」を使って、クッキーに保存されたデータを取得する

この配列のインデックスに、クッキーにデータを保存したときの名前(setcookie()関数の第1引数に指定した値)を指定することで、データを取り出すことができます。

クッキーにデータが保存されていない場合、この変数は長さ=0の文字列を返します。strlen()関数によってクッキーデータの有無を確認できます。

②parse_str()関数でデータを分解する

「$_COOKIE」で取り出される値は、setcookie()関数の第2引数に指定した文字列全体になります。このままでは個々のデータを扱えないので、parse_str()関数を使ってデータを分解します。

③クッキー上のデータ名を名前とする変数によって、個々のデータを扱う

parse_str()関数を呼び出した後は、データを保存した時のクッキーのデータ名を名前とする変数によって、個々のデータを扱うことができます。例えば「ck_data1=10」のように保存した場合、「$ck_data1」変数に値「10」が格納されています。

クッキーへの保存時にも文字列はエスケープされます。保存された値にエスケープ文字(「"」や「¥」など)が含まれる可能性がある場合には、適宜、stripcslashes()関数などで対処します。

<?php
header("Content-type: text/html; charset=utf-8");

if(strlen($_COOKIE["mycookiedata"]) > 0){
	//クッキーのデータを取得
	$data = $_COOKIE["mycookiedata"];
	
	//クッキーの生データを出力
	echo $data . "<br><br>";
	
	//データを分解して保存時のデータを復元
	parse_str($data);
	
	//分解後のデータを出力
	echo "クッキーに保存されていたデータは、<br>";
	echo $ck_data1 . "<br>";
	echo $ck_data2 . "<br>";
}
else{
	//クッキーにデータがないとき
	echo "データはクッキーに保存されていません!";
}
?>

inserted by FC2 system