【サクッと解説】PHP cookieの基本とログイン維持の使い方

目次

1. 本記事のポイント

  • PHPにおけるCookieの基本操作(保存・取得・削除)を解説
  • ログイン状態の維持など、実務的な用途での活用方法を紹介
  • セキュリティや有効期限など、Cookie使用時の注意点も補足

2. PHPのCookieとは?

Cookie(クッキー)は、ユーザーのブラウザに一時的なデータを保存するための仕組みです。PHPでは、setcookie()関数を使ってCookieを送信し、$_COOKIEスーパーグローバル変数を通じて取得できます。

サーバーとクライアント間で状態を保持しないHTTPの性質上、ログイン状態やユーザー設定などを維持するためにCookieが利用されます。保存される情報は文字列であり、ファイルや配列などの複雑なデータはシリアライズして保存する必要があります。

Cookieはレスポンスヘッダで送信されるため、setcookie()echoなどの出力よりも前に実行する必要があります。なお、セキュリティ強化のため、HttpOnlySecureといったオプションも適切に設定すべきです。

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を使い、削除時には期限を過去に設定します。

よかったらシェアしてね!
  • URLをコピーしました!
目次