1つのクッキーに複数の値を格納する

広告

1つのサーバからクライアントに送ることが出来るクッキーは1つだけではありません。例えば下記のように複数のクッキーを送ることができます。

setcookie("user", "yamada");
setcookie("pass", "pass");

ただし、クライアントは1つのサーバから受け取ることが出来るクッキーは最大20個まで、全体でも合計300個までのクッキーしか保持できないことになっています。その為、多くのクッキーを利用したい場合には工夫が必要となります。

20個以上のクッキーを送りたい場合には、クッキー名を配列のように扱い、配列の各要素に値をセットします。

setcookie("buy[1]", "Televison");
setcookie("buy[2]", "Video");
setcookie("buy[3]", "Audio");

このようにすると、クッキー名としては「buy」だけが使われますので1つしかクッキーを消費しません。

取り出す時は次のように行います。

$val = $_COOKIE['cookie'];

print($val[1]);
print($val[2]);
print($val[3]);
サンプルコード

では試してみましょう。

<?php
    setcookie ("buy[1]", "Televison");
    setcookie ("buy[2]", "Video");
    setcookie ("buy[3]", "Audio");
?>

<html>
<head><title>PHP TEST</title></head>
<body>

<?php
    if (isset($_COOKIE["buy"])){
        $val = $_COOKIE["buy"];
        print('<p>');
        print('購入したものは下記の通りです<br>');
        print($val[1].'<br>');
        print($val[2].'<br>');
        print($val[3]);
        print('</p>');
    }else{
        print('<p>値をセットしました</p>');
    }

?>

</body>
</html>

上記ファイルをWWWサーバに設置しブラウザ経由で見ると下記のように表示されます。

PHPで1つのクッキーに複数の値を設定

ブラウザで再読み込みをすると次のように表示されます。

PHPで1つのクッキーに複数の値を設定

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。