目次
1. 本記事のポイント
- PHPにおけるCookieの基本操作(保存・取得・削除)を解説
- ログイン状態の維持など、実務的な用途での活用方法を紹介
- セキュリティや有効期限など、Cookie使用時の注意点も補足
2. PHPのCookieとは?
Cookie(クッキー)は、ユーザーのブラウザに一時的なデータを保存するための仕組みです。PHPでは、setcookie()
関数を使ってCookieを送信し、$_COOKIE
スーパーグローバル変数を通じて取得できます。
サーバーとクライアント間で状態を保持しないHTTPの性質上、ログイン状態やユーザー設定などを維持するためにCookieが利用されます。保存される情報は文字列であり、ファイルや配列などの複雑なデータはシリアライズして保存する必要があります。
Cookieはレスポンスヘッダで送信されるため、setcookie()
はecho
などの出力よりも前に実行する必要があります。なお、セキュリティ強化のため、HttpOnly
やSecure
といったオプションも適切に設定すべきです。
3. 詳細解説
Cookieを保存する(ログイン情報などを保持)
setcookie()
を使ってクライアントにデータを保存します。以下は基本的な構文です:
PHP
<?php
// 名前、値、有効期限を指定してCookieをセット(1時間後まで有効)
setcookie("user_id", "12345", time() + 3600, "/", "", true, true);
?>
- 第1引数:Cookie名
- 第2引数:保存する値(文字列)
- 第3引数:有効期限(Unixタイムスタンプ)
- 第6引数:Secure(HTTPSのみ送信)
- 第7引数:HttpOnly(JavaScriptからアクセス不可)
Cookieを取得する(ログイン状態の確認など)
保存されたCookieは$_COOKIE
から参照可能です。
PHP
<?php
if (isset($_COOKIE['user_id'])) {
echo "ユーザーID:" . $_COOKIE['user_id'];
} else {
echo "Cookieは設定されていません。";
}
?>
ブラウザがCookieを送信するのは、次回以降のリクエスト時です。
同一スクリプト内で即座に反映はされない点に注意してください。
Cookieを削除する(ログアウト処理など)
有効期限を過去に設定することで削除します。
PHP
<?php
// Cookieを削除(有効期限を過去に設定)
setcookie("user_id", "", time() - 3600, "/");
?>
この操作により、ブラウザは該当のCookieを破棄します。
4. よくあるミス・誤解・落とし穴
- 出力より前にsetcookie()を呼ばないと無効:
setcookie()
はHTTPヘッダとして送信されるため、HTML出力後には使えません。 - 有効期限が短すぎる:ログイン維持目的で使用する場合、数時間〜数日単位の有効期限を設ける必要があります。
- Secure/HttpOnlyの未設定:これらを設定しないと、XSSなどの脅威に対して脆弱になります。特にログイン情報を扱うCookieでは必須です。
- ブラウザの制限やSameSite属性の未考慮:クロスサイト要件や最近のブラウザ制限を無視すると、Cookieが期待通り送信されないことがあります。
5. まとめ
PHPにおけるCookieの操作はシンプルですが、セキュリティ設定や実行タイミングなど、仕様上の制約に注意する必要があります。
特にログイン維持などの用途では、setcookie()
の適切な使い方と、Secure/HttpOnly属性の併用が重要です。取得には$_COOKIE
を使い、削除時には期限を過去に設定します。