カテゴリ: 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で経過時間を計測する方法を完全解説!初心者でもわかる time.perf_counter() と time.sleep()
New2
Python
Pythonの関数を引数に渡す方法!高階関数の使い方を解説
New3
Python
Pythonの入力と出力を学ぼう!print()関数とinput()関数の使い方
New4
PHP
PHPのCookieの管理方法とクライアントサイドのデータ保持の基本とベストプラクティス
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.2
Java&Spring記事人気No2
PHP
PHP の可変変数と変数の参照渡しを完全解説!初心者でも理解できる動的変数の使い方
No.3
Java&Spring記事人気No3
PHP
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.4
Java&Spring記事人気No4
PHP
PHPのCookieのSecure, HttpOnly, SameSite設定を初心者向けに解説
No.5
Java&Spring記事人気No5
PHP
PHPのswitch文を使った条件処理の書き方を完全ガイド!初心者でもわかる使い方
No.6
Java&Spring記事人気No6
PHP
PHPのCookieセキュリティ対策をやさしく解説!XSSとHTTPSで安全にログイン情報を守る方法
No.7
Java&Spring記事人気No7
Python
Pythonのインストール&環境構築!Windows・Mac・Linuxでの手順を初心者向けに解説
No.8
Java&Spring記事人気No8
Python
Pythonのインデントの重要性!なぜPythonではインデントが必須なのか?
-
-