カテゴリ: PHP 更新日: 2025/06/02

PHP の Cookie の有効期限を設定する方法(expires, max-age)

PHP の Cookie の有効期限を設定する方法(expires, max-age)
PHP の Cookie の有効期限を設定する方法(expires, max-age)

新人と先輩の会話形式で理解しよう

新人

「PHP の Cookie の有効期限を設定する方法を知りたいのですが、どう設定すればいいですか?」

先輩

「Cookie の有効期限を設定すると、一定時間後に自動的に削除されたり、ブラウザを閉じても保持されたりするんだ。用途に応じて設定方法が変わるよ。」

新人

「具体的にはどんな設定方法があるんですか?」

先輩

「主に expiresmax-age の2つの方法があるよ。まずは Cookie の有効期限について基本から説明するね!」

-

1. Cookieの有効期限とは?(基本的な説明)

1. Cookieの有効期限とは?(基本的な説明)
1. Cookieの有効期限とは?(基本的な説明)

Cookie の有効期限とは、Cookie がブラウザに保存される期間のことです。Cookie には大きく分けて次の2種類があります。

  • セッション Cookie: ブラウザを閉じると削除される Cookie
  • 持続的 Cookie: 有効期限が設定されている Cookie

セッション Cookie は、ユーザーがブラウザを閉じた瞬間に削除されます。一方、持続的 Cookie は、設定された時間までブラウザに保存され続けます。

持続的 Cookie の有効期限を設定するには、setcookie() 関数を使用し、expiresmax-age を指定します。

2. Cookieの有効期限を設定する理由

2. Cookieの有効期限を設定する理由
2. Cookieの有効期限を設定する理由

なぜ Cookie に有効期限を設定する必要があるのでしょうか?主な理由は以下の通りです。

  • ユーザーの利便性向上: ログイン情報や設定を保持し、次回のアクセス時に自動入力を可能にする。
  • セキュリティ強化: 一定時間経過後に自動的に削除し、不正利用を防ぐ。
  • サーバー負荷の軽減: 不要な Cookie を削除し、不要なデータを管理しないようにする。

例えば、ログイン情報を 1 週間保持したい場合は、expires を使って 7 日間の有効期限を設定します。逆に、セキュリティを考慮して短時間で削除する場合は 1 時間や 30 分などの短い有効期限を設定することもあります。

次のセクションでは、具体的に Cookie の有効期限を設定する方法について解説します。

3. Cookieの有効期限を設定する方法(expiresの使い方)

3. Cookieの有効期限を設定する方法(expiresの使い方)
3. Cookieの有効期限を設定する方法(expiresの使い方)

Cookie の有効期限を設定する方法のひとつに expires があります。これは、Cookie の有効期限を「特定の日時」に設定するものです。

PHP で expires を設定するには、setcookie() 関数の第3引数に、期限を示すタイムスタンプ(Unix タイム)を指定します。


setcookie("username", "Taro", time() + 86400, "/");

上記のコードでは、「username」という Cookie を 1 日(86400秒)後に期限切れに設定しています。

また、特定の日付まで有効な Cookie を作成したい場合は、strtotime() を使うこともできます。


setcookie("session_id", "abc123", strtotime("+7 days"), "/");

このコードは、「session_id」という Cookie を 7 日後まで有効にします。

4. Cookieの有効期限を設定する方法(max-ageの使い方)

4. Cookieの有効期限を設定する方法(max-ageの使い方)
4. Cookieの有効期限を設定する方法(max-ageの使い方)

Cookie の有効期限を設定するもうひとつの方法に max-age があります。これは、「現在の時刻からの秒数」で Cookie の寿命を指定します。

max-age を指定する場合は、setcookie() のオプションを利用して設定できます。


setcookie("user_theme", "dark", [
    "expires" => time() + 86400, // 1日後
    "path" => "/",
    "secure" => true,
    "httponly" => true,
    "samesite" => "Strict"
]);

PHP では max-age を直接指定する方法はなく、主に expires を利用する形になりますが、HTTP ヘッダーで max-age を設定することは可能です。


header("Set-Cookie: test_cookie=value; Max-Age=3600; Path=/; Secure; HttpOnly");

この設定では、「test_cookie」を 1 時間(3600 秒)保持するよう指定しています。

-

5. expires と max-age の違い

5. expires と max-age の違い
5. expires と max-age の違い

expiresmax-age は、どちらも Cookie の有効期限を設定するための方法ですが、それぞれ以下の違いがあります。

設定方法 指定する値 対応ブラウザ
expires 特定の日時(例: 2025年12月31日 23:59:59) すべてのブラウザでサポート
max-age 現在時刻からの秒数(例: 3600 秒) HTTP/1.1 以降でサポート(古いブラウザでは未対応)

一般的には、expires を使用する方が広くサポートされていますが、HTTP ヘッダーを操作する場合は max-age を使うこともあります。

6. Cookieの有効期限を変更・削除する方法

6. Cookieの有効期限を変更・削除する方法
6. Cookieの有効期限を変更・削除する方法

一度設定した Cookie の有効期限を変更したり、削除したりすることができます。変更する場合は、新しい有効期限を指定して setcookie() を再度実行します。

6.1 Cookieの有効期限を変更する

例えば、Cookie の有効期限を 1 週間から 30 日に延長する場合、以下のように記述します。


setcookie("user_token", "abc123", time() + (30 * 86400), "/");

このコードを実行すると、元々 1 週間の有効期限だった Cookie は 30 日に延長されます。

6.2 Cookieを削除する

Cookie を削除するには、有効期限を過去の時間に設定します。例えば、以下のように記述すると、すぐに Cookie が削除されます。


setcookie("user_token", "", time() - 3600, "/");

このコードでは、有効期限を 1 時間前に設定することで、ブラウザが Cookie を削除します。

7. Cookieの有効期限を設定する際の注意点

7. Cookieの有効期限を設定する際の注意点
7. Cookieの有効期限を設定する際の注意点

Cookie の有効期限を設定する際には、以下の点に注意が必要です。

7.1 ユーザーのプライバシーに配慮する

Cookie には個人情報を保存しないようにしましょう。特に、パスワードやクレジットカード情報を直接保存するのは危険です。

7.2 短すぎる有効期限はユーザーの不便につながる

有効期限が短すぎると、ユーザーがログインするたびに情報がリセットされるため、不便に感じることがあります。用途に応じて適切な期間を設定しましょう。

7.3 長すぎる有効期限はセキュリティリスクになる

逆に、有効期限が長すぎると、不正に Cookie を利用されるリスクが高まります。ログイン情報などの重要な Cookie には適切な期限を設定しましょう。

8. Cookieの有効期限を活用した実践的な例(ログイン情報の保存など)

8. Cookieの有効期限を活用した実践的な例(ログイン情報の保存など)
8. Cookieの有効期限を活用した実践的な例(ログイン情報の保存など)

実際に Cookie の有効期限を活用する例として、ログイン情報の保存を考えてみましょう。

8.1 ログイン情報を一定期間保持する

ログインフォームで「次回もログインを維持する」オプションを選択した場合、Cookie にユーザー情報を保存し、一定期間ログイン状態を保持することができます。


if ($_POST["remember_me"] === "on") {
    setcookie("user_email", $_POST["email"], time() + (30 * 86400), "/");
}

このコードでは、「remember_me」がチェックされている場合、ユーザーのメールアドレスを 30 日間 Cookie に保存します。

8.2 次回アクセス時に自動ログインする

保存した Cookie を利用して、ユーザーがサイトを再訪問した際に自動ログインさせることができます。


if (isset($_COOKIE["user_email"])) {
    echo "ようこそ、" . htmlspecialchars($_COOKIE["user_email"], ENT_QUOTES, 'UTF-8') . " さん!";
} else {
    echo "ログインしてください。";
}

このコードを実行すると、Cookie に保存されているメールアドレスがあれば、自動的にログインメッセージを表示します。

8.3 セキュアなログイン Cookie の設定

ログイン Cookie をより安全に扱うために、securehttponly を設定することを推奨します。


setcookie("auth_token", "xyz456", [
    "expires" => time() + 86400,
    "path" => "/",
    "secure" => true,
    "httponly" => true,
    "samesite" => "Strict"
]);

この設定を行うことで、Cookie は HTTPS 通信時のみ送信され、JavaScript からのアクセスも禁止されます。

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

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

カテゴリの一覧へ
新着記事
Pythonのエラーメッセージの読み方!よくあるエラーと解決方法
PHPの関数(function)の基本を完全ガイド!初心者でもわかる使い方
Pythonの条件式でNoneを判定する方法!is None vs == None の違い
Pythonのpass文とは?一時的なコードブロックをスキップする方法
人気記事
No.1
Java&Spring記事人気No1
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.2
Java&Spring記事人気No2
PHPとは?初心者向けにわかりやすく解説
No.3
Java&Spring記事人気No3
PHPの関数(function)の基本を完全ガイド!初心者でもわかる使い方
No.4
Java&Spring記事人気No4
PHP の文字列の基本操作(連結・切り出し・長さ)の使い方
-