カテゴリ: PHP 更新日: 2026/02/12

PHPのCookieの管理方法とクライアントサイドのデータ保持の基本とベストプラクティス

PHP の Cookie の管理とクライアントサイドのデータ保持のベストプラクティス
PHP の Cookie の管理とクライアントサイドのデータ保持のベストプラクティス

先生と生徒の会話形式で理解しよう

生徒

「ホームページで入力した名前とかを、また次に開いたときに覚えておく方法ってあるんですか?」

先生

「はい、ありますよ。その仕組みは『Cookie(クッキー)』といって、PHPというプログラムで使われることが多いです。パソコンやスマートフォンの中に、ちょっとした情報を保存しておくことができます。」

生徒

「へぇ!PHPってサーバーのプログラムですよね?保存したデータはずっと残るんですか?」

先生

「とてもいい疑問ですね。クッキーは“期限つきのメモ”のようなもので、設定によって保存期間を決められます。今日はそのPHPでのクッキーの管理方法と、安全にデータを扱うベストプラクティスについて、わかりやすく解説していきましょう!」

1. Cookie(クッキー)とは?初心者でもわかる基本のしくみ

1. Cookie(クッキー)とは?初心者でもわかる基本のしくみ
1. Cookie(クッキー)とは?初心者でもわかる基本のしくみ

Cookie(クッキー)とは、Webサイトがあなたのパソコンやスマホに情報を一時的に保存するための仕組みです。たとえば、「前回入力した名前を覚える」や「ログインしたままにする」といった場面で使われます。

クッキーの情報は、Webページを開くたびにサーバー(PHP)にも送られます。つまり、PHPでその情報を読み取って処理ができるということです。

2. PHPでCookieを保存・読み込みする方法

2. PHPでCookieを保存・読み込みする方法
2. PHPでCookieを保存・読み込みする方法

PHPでは、setcookie()という関数を使ってクッキーを保存できます。保存されたクッキーは、次回アクセス時にPHPで読み取ることができます。


setcookie("username", "Taro", time() + 3600); // 1時間保存

この例では、「username」という名前のクッキーに「Taro」という値を1時間だけ保存しています。

読み取るときは、次のように$_COOKIE変数を使います。


echo $_COOKIE["username"];

3. クライアントサイドとサーバーサイドの違いとは?

3. クライアントサイドとサーバーサイドの違いとは?
3. クライアントサイドとサーバーサイドの違いとは?

初心者の方にとって混乱しやすい言葉ですが、「クライアントサイド」とは「あなたのパソコンやスマホ側」のことを指します。一方「サーバーサイド」とは、Webページを配信しているサーバー側のことです。PHPはこのサーバーサイドで動く言語です。

クッキーは、クライアントサイド(ユーザーの端末)に保存されるので、JavaScriptでも操作できますし、サーバー側のPHPでも利用できます。

4. クッキーの使用上の注意点

4. クッキーの使用上の注意点
4. クッキーの使用上の注意点

クッキーを使うときに気をつけるべきことがいくつかあります。まず1つ目は「保存できる容量が少ない」ということ。通常、1つのクッキーは4KB(キロバイト)以下に制限されています。

2つ目は「セキュリティ」の問題です。クッキーはブラウザで誰でも見られるため、個人情報やパスワードなど、重要な情報は絶対に保存しないようにしましょう。

5. セキュリティを高めるPHPのクッキー設定

5. セキュリティを高めるPHPのクッキー設定
5. セキュリティを高めるPHPのクッキー設定

PHPでクッキーを安全に扱うには、以下のような設定を追加します。


setcookie(
    "username",
    "Taro",
    [
        "expires" => time() + 3600,
        "path" => "/",
        "secure" => true,
        "httponly" => true,
        "samesite" => "Strict"
    ]
);

secureは、暗号化された通信(https)のときだけ送信される設定です。httponlyをtrueにすると、JavaScriptからクッキーにアクセスできなくなり、不正アクセスを防ぎます。

samesiteは、他のサイトからの不正なアクセスを防ぐための設定で、「Strict」や「Lax」などの値を指定できます。

6. JavaScriptと連携してクッキーを扱う方法

6. JavaScriptと連携してクッキーを扱う方法
6. JavaScriptと連携してクッキーを扱う方法

PHPだけでなく、JavaScriptでもクッキーを扱うことで、より柔軟な動作ができます。たとえば、入力した名前を保存して、次にページを開いたときに自動で表示するような処理も可能です。


<input type="text" id="nameInput" placeholder="名前を入力">
<button onclick="saveName()">保存</button>
<p id="greeting"></p>

<script>
function saveName() {
    const name = document.getElementById("nameInput").value;
    document.cookie = "username=" + encodeURIComponent(name) + "; max-age=86400";
    alert("名前を保存しました!");
}

function showGreeting() {
    const name = getCookie("username");
    if (name) {
        document.getElementById("greeting").innerText = name + "さん、ようこそ!";
    }
}

function getCookie(name) {
    const cookies = document.cookie.split(';');
    for (let i = 0; i < cookies.length; i++) {
        const c = cookies[i].trim();
        if (c.startsWith(name + "=")) {
            return decodeURIComponent(c.substring(name.length + 1));
        }
    }
    return "";
}

showGreeting();
</script>

このように、JavaScriptでクッキーを操作すれば、画面の表示を動的に変えることができます。

7. セッションとCookieの違いを理解しよう

7. セッションとCookieの違いを理解しよう
7. セッションとCookieの違いを理解しよう

PHPでは、クッキーとよく似た仕組みで「セッション(session)」というものがあります。セッションは、サーバー側でデータを保存する仕組みで、セキュリティが高く、ログイン情報などに向いています。

セッションでは、クライアント側にはIDだけを渡し、実際のデータはサーバーに保存されます。一方、クッキーはデータ自体がブラウザに保存されるため、誰でも見られる可能性があります。

8. 初心者向けCookie管理のベストプラクティスまとめ

8. 初心者向けCookie管理のベストプラクティスまとめ
8. 初心者向けCookie管理のベストプラクティスまとめ
  • クッキーは“覚えておいてほしいデータ”を一時的に保存するために使う
  • 重要な情報(パスワードやメールアドレス)は保存しない
  • セキュリティ設定(secure・httponly・samesite)を必ず使う
  • JavaScriptとPHPを組み合わせると便利な使い方ができる
  • クッキーの代わりにセッションを使うときは用途に合わせて選ぶ

PHPとJavaScriptを使ったCookieの管理は、Web制作の基本的な知識としてとても重要です。初心者の方でも正しく使えば、便利で安全なWebサイトを作ることができます。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
Python
Pythonのカスタム例外を作成する方法を完全解説!初心者でもわかる独自のExceptionクラス入門
New2
PHP
PHP の型変換を完全ガイド!初心者でもわかる明示的変換・自動変換
New3
PHP
PHPの真偽値と条件判定をやさしく解説!初心者でもわかるempty・isset・is_nullの使い方
New4
PHP
PHP の file_get_contents() を使ってファイルを読み込む方法!初心者でもできる簡単なファイル操作
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonのfinally文を徹底解説!例外発生時でも実行される処理の書き方と使い方
No.2
Java&Spring記事人気No2
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonのクラスメソッドと静的メソッドの違いとは?初心者でも迷わない使い分けガイド
No.4
Java&Spring記事人気No4
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム
No.5
Java&Spring記事人気No5
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.6
Java&Spring記事人気No6
PHP
PHPの可変長引数(...$args)の使い方を完全ガイド!初心者でもわかる基本と活用方法
No.7
Java&Spring記事人気No7
PHP
初心者向けPHP の MySQL のデータを更新する方法(UPDATE 文)完全ガイド
No.8
Java&Spring記事人気No8
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化