Skip to content

PHP_07 「クッキー」

Last updated on 2019/7/11

Cookieとは?

Cookieについて調べると、下記の説明がありました。

Cookie は、ユーザー設定についての情報を保持するために、Web サイトによってユーザーの PC に保存される小さなファイルです。Cookie を使用して、サイトにユーザーの個人設定を記憶させたり、サイトにアクセスする際のサインインを省略可能にしたりして、利便性を向上させることができます。しかし、一部の Cookie は、ユーザーがアクセスするサイトを追跡してプライバシーを侵害するおそれがあります。

https://www.microsoft.com/ja-jp/safety/terms/cookie.aspx

すこし長いので、一言でいうとなにかしらのデータを自分の使っているブラウザに保存するということです。

一時的なものやユーザーの設定情報などを保存するのに使います。

ただ、注意が必要なのはCookieは簡単に見られたり、改ざんすることができるので、注意が必要です。

値の保存

Cookieに保存する際には、setcookie("キー名", "値") を使います。

<?php
$value = 'こんにちは、🐰';
setcookie("キー名", $value);
?>

といった形で使用できます。

setcookie はHTMLタグの出力やPHPの出力よりも前に設定しなければなりません。<html>の前に書きましょう。

値の出力

Cookieから値を取り出して使うには、 $_COOKIE["キー名"] で使うことができます。

<?php
// Cookieの保存
setcookie("name", "太郎");

// クッキーの出力
echo $_COOKIE["name"];
?>

Cookieの使う際、指定のキー名で値が設定されているか調べる方法があります。

<?php
    if (isset($_COOKIE["name"])){
        echo $_COOKIE["name"];
    }else{
        echo "次郎";
    }
?>

有効期限の設定

Cookieは有効期限を設定することもできます。setcookie の第三引数に時間を秒単位で書けば、有効期限を設定できます。

// nameというキーで[太郎]を保存。有効期限は1時間。
setcookie("name", "太郎", time() + (7 * 24 * 60 * 60)) // 7 日 * 24 時間 * 60 分 * 60 秒

なお、設定しない場合はブラウザを閉じたら自動で破棄されるようになります。

time() は、現在時刻を 1970 年 1 月 1 日 00:00:00 GMTからの通算秒として返します。

値の削除

値を削除するには、有効期限を過去の時間にすれば、消すことができます。

// nameを削除
setcookie("name", "太郎", time() - 1)

全体のコード

<?php
// nameというキーで[太郎]を保存。有効期限は1時間。
setcookie("name", "太郎", time() + 60 * 60);

if (isset($_COOKIE["name"])){
    echo $_COOKIE["name"];
}
?>