クッキーに保存されたデータの読み込みは、以下のような手順で処理します
①スーパーグローバル変数「$_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 "データはクッキーに保存されていません!"; } ?>