クッキーとセッションの違い
更新日:2025/03/06

クッキーとは何か?
Cookieが生まれた背景と理由
HTTPはステートレス(状態を保持しない)
HTTPの通信は、クライアント(例:ブラウザ)からのリクエストと、それに対するサーバーからのレスポンスで成り立っている。
HTTPの問題点
HTTPはステートレス(状態を持たない)なやりとりをしており、前回のリクエストの記憶を持つことができませんでした、、
そこでユーザーの状態を保持するためにクッキーが考えれました。
クッキーを使用し、ユーザーの識別情報をブラウザに保存し、次回アクセス時にサーバーに送信できるようになりました。
クッキーとは
クッキー(Cookie)とは、ユーザーのブラウザに保存する小さなテキストデータ(ファイル)のことです
クッキーの仕組み
実際のデータの流れ
- サーバーでクッキー(user_id)を発行します。
<?php
// user_id=12345 をクッキーに設定(有効期限は1時間後)
setcookie("user_id", "12345", time() + 3600, "/");
?>
- サーバーが発行したクッキーは、以下のようなテキストデータとしてブラウザに保存されます。
user_id=12345
- クッキーがブラウザに保存されている状態でサーバーにリクエストすると、ブラウザが自動的にクッキーの内容を「Cookie」ヘッダーに含めて自動的にサーバーに送信されます。
HTTP/1.1 200 OK
Set-Cookie: session_id=abc123; Expires=Fri, 31 Dec 2025 23:59:59 GMT; Path=/; HttpOnly
- サーバーが $_COOKIE でクッキーの値を取得
クッキーでセキュアな情報を扱う際の問題
クッキーは ユーザーのPCやスマホ(ブラウザ)に保存される ため、ユーザー自身や攻撃者が編集可能 です
⬇️
改ざんや盗聴のリスクが伴います
こうしたリスクへの対策として、クッキーの内容は常に信用しないようにし、重要な情報(ユーザーの権限や個人情報など)を直接クッキーに保存しないことが基本です
セッションとは何か?
セッション誕生の背景
クッキーのセキュリティリスクを解決する方法として、サーバー側でデータを管理する「セッション」という仕組みが生まれました。
📌 セッションの考え方
- クライアント側には セッションIDだけをクッキーで保存 し、実際のデータはサーバーで管理する。
PHPでのセッション作成の流れ
- PHPでセッションを開始するには session_start(); を呼び出します。
$_SESSION 変数を使ってデータをセットできます。
<?php
session_start(); // セッション開始
// ユーザー情報をセッションに保存
$_SESSION["user_id"] = 12345;
$_SESSION["username"] = "JohnDoe";
echo "セッションを作成しました。";
?>
✅ このスクリプトを実行すると、サーバーにセッションデータが保存され、クライアントには PHPSESSID
というクッキーがセットされる。
- $_SESSION にデータを保存すると、サーバー側のセッションファイルに書き込まれる。
(PHPのデフォルト設定では、セッションデータは /tmp/ や /var/lib/php/sessions/ にファイルとして保存されます。) - 次回アクセス時、クライアントのセッションIDを元にサーバーのセッションファイルを読み取り、$_SESSION に復元する。
$_POST
と $_SESSION
はセットで使用することが多いです
<?php
session_start(); // セッション開始
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST["username"];
$password = $_POST["password"];
// 仮の認証(通常はデータベースで確認)
if ($username == "admin" && $password == "pass123") {
$_SESSION["username"] = $username; // セッションに保存
echo "ログイン成功!<a href='dashboard.php'>ダッシュボードへ</a>";
} else {
echo "ログイン失敗";
}
}
?>
項目 | $_POST | $_SESSION |
---|---|---|
データの保存場所 | クライアント(HTTPリクエストの本文) | サーバー(セッションファイル) |
データの寿命 | リクエストが完了すると消える(一時的) | ブラウザを閉じるまで or session_destroy() で消える |
データのアクセス方法 | 送信時のみ取得可能 | session_start() を呼べばいつでも取得可能 |
主な用途 | フォームの入力データの受け取り | ユーザー情報や入力データの一時保存 |
👉 つまり、$_POST
はリクエストごとにデータが消えるが、$_SESSION
はページをまたいでもデータを保持できる!
クッキーとセッションの根本的な違い
クッキーとセッションの最も大きな違いは、データの保存場所です。
クッキーはユーザーのブラウザ(クライアント側)にデータを保存しますが、セッションはサーバー側にデータを保存し、クライアント側には識別用のセッションIDのみを保存します

-
検索
(例) debug search etc.. -
カテゴリー
-
【WordPress】カスタムフィールド作成の仕方「ACF」Advanced Custom Fieldsの使用法
更新日:2024/06/10
299 view
-
mixhostでのWordPress利用について
更新日:2024/04/02
296 view
-
scrollHint
更新日:2024/03/13
249 view
-
LOLIPOPでWordPressインストール(サブディレクトリにインストールしたWordPressをドメイン直下で表示)
更新日:2024/06/13
237 view
-
XML Sitemap Generator for Google不具合のダウングレード対応、代替プラグイン
更新日:2024/06/13
235 view
-
Sass導入方法
更新日:2024/03/13
207 view
-
【SnowMonkey】納品までのフローまとめ
更新日:2025/02/15
163 view
-
【Snow Monkey】Googleサーチコンソール登録
更新日:2024/05/28
157 view
-
ワードプレスでフォントを変えたいとき、プラグインを使えば初心者でも簡単
更新日:2025/02/16
144 view
-
【Googleサーチコンソール】検索画面で表示させたくない「Googleのインデックス削除」
更新日:2024/06/07
129 view
-
【ショートコード】編集画面で任意の場所にHTMLファイルを挿入
更新日:2024/01/26
122 view
-
キーワード検索で上位表示させる方法【SEO】
更新日:2023/10/28
120 view
-
tailwindcss使い方
更新日:2024/03/13
120 view
-
Recline: GitHub Copilotで動作するClaude 3.5 Sonnet搭載の開発支援ツール
更新日:2025/01/20
110 view
-
WordPressプラグイン「All-in-One WP Migration」のトラブル
更新日:2022/03/31
84 view
-
ワードプレスセキュリティー対策まとめ【2025年】「site guard wordpress」「BackWPup バージョン5でUI変更!?」
更新日:2025/02/25
76 view
-
SSHを使用してGitHubのリポジトリをクローン、複数の接続元で公開鍵をディレクトリで区別する方法
更新日:2025/01/13
47 view
-
VSCodeで開発効率を劇的に向上させる!Roo-Clineプラグイン完全ガイド【Gemini API】
更新日:2025/02/08
41 view
-
「JSONスキーマ」と「Few-shot Learning」で実現する次世代生成AIソフトウェア開発の可能性
更新日:2025/02/12
40 view
-
WordPressの無料画像素材のおすすめダウンロードサイト!
更新日:2022/02/22
35 view
-
リファクタリング【VSCode Javasctipt Python】
更新日:2025/03/09
35 view
-
形態素解析とは?初心者でもわかるツールの使い方と実践例
更新日:2025/02/08
33 view
-
【Next.js AWS】音声文字起こし&要約、分析アプリケーション(S3)(Transcribe)(Amazon Bedrock)
更新日:2025/02/13
30 view
-
VSCodeプラグイン「 Pretter – Code formatter」「PHP Intelephense 」
更新日:2025/01/06
26 view
-
WordPressでカスタムフィールドを使った記事のスコアリング 一定割合ランダム表示でε-greedy方策
更新日:2025/02/24
24 view
-
【CSS JavaScript サンプルコード】アコーディオン 続きを読む(Read more)Toggle 折りたたみコンテンツ
更新日:2025/02/05
24 view
-
【WordPress】SVGを投稿記事のサムネイルに!自作プラグイン(未実装🤷♂️)「nonce(ナンス)トークン」wp_postmetaテーブルを利用
更新日:2025/02/16
23 view
-
Googleアドセンスとは?〜前編〜
更新日:2025/02/16
22 view
-
【WordPressプラグイン】人気記事 管理 WordPress Popular Posts 実践的なカスタマイズ
更新日:2025/02/15
22 view
-
AWSのOCRサービス完全ガイド:Textract、Rekognition、Comprehendの使い分け
更新日:2025/02/09
19 view
-
スマートフォンファーストのWeb開発実践ガイド
更新日:2025/01/23
18 view
-
【WordPress】プラグイン不使用でカスタムタクソノミーを設定、絞り込み検索について
更新日:2025/01/26
18 view
-
Express、FastAPIを使用し、二重fetch構成のメリット
更新日:2025/03/09
18 view
-
サブディレクトリでインストールしたWordPressをルートディレクトリで表示させる方法(Xserver編)
更新日:2025/01/19
17 view
-
クッキーとセッションの違い
更新日:2025/03/09
17 view