関数の概要
session_set_cookie_params は、PHPのセッションで使用されるクッキーのパラメータを設定するための関数です。セッションクッキーの有効期限やパス、ドメイン、セキュリティオプションなどを細かく調整することができます。主に session_start() を呼び出す前に設定を行い、ユーザーのセッション管理を柔軟にコントロールできます。
パラメータの説明
- $lifetime(int):クッキーの有効期限を秒単位で指定します。0を指定するとブラウザを閉じるまで有効です。
- $path(string):クッキーが有効なパスを指定します。デフォルトは “/” でドメイン全体で有効になります。
- $domain(string):クッキーが有効なドメインを指定します。例えば “.example.com” と書くとサブドメインも含みます。
- $secure(bool):HTTPS通信の場合にのみクッキーを送信するかどうか指定します。trueの場合、HTTPS限定になります。
- $httponly(bool):JavaScriptからクッキーにアクセスできないようにするかどうかを指定します。trueにするとXSS対策になります。
戻り値
この関数は void を返しません。つまり戻り値はありません。失敗してもエラーや例外を返しませんが、設定は次回の session_start() 呼び出し時に適用されます。
使用例
基本的な使い方
<?php
// セッションクッキーの有効期限を1時間(3600秒)に設定
session_set_cookie_params(3600);
session_start();
?>
この例では、セッションのクッキーがブラウザを閉じても1時間有効になります。
カスタムパスとドメイン指定
<?php
// パスを "/app" に限定、ドメインをサブドメインも含めた.example.comに設定
session_set_cookie_params(
0, // ブラウザ終了まで有効
'/app', // 有効パス
'.example.com' // 有効ドメイン
);
session_start();
?>
この設定により、セッションクッキーは “/app” パス以下でのみ送信され、ドメインはサブドメインを含む “.example.com” に制限されます。
HTTPS限定かつHttpOnlyを有効にする例
<?php
// クッキーをHTTPS限定、かつJavaScriptからアクセス不可に設定
session_set_cookie_params(
0,
'/',
'',
true, // セキュア(HTTPS限定)
true // HttpOnly
);
session_start();
?>
セキュリティ対策として、クッキーがHTTPS環境でのみ送信され、JavaScriptからのアクセスも制限されます。
配列での指定(PHP 7.3以降)
<?php
session_set_cookie_params([
'lifetime' => 7200,
'path' => '/',
'domain' => 'example.com',
'secure' => true,
'httponly' => true,
'samesite' => 'Strict' // SameSite属性も設定可能
]);
session_start();
?>
PHP 7.3以降では配列形式で細かくオプションを指定できます。ここでは同時に SameSite 属性も設定しています。
関連する関数
- session_start()
- session_cookie_params()
- session_set_save_handler()
- setcookie()
まとめ
session_set_cookie_params はPHPでのセッションクッキーの挙動を細かくカスタマイズできる重要な関数です。セキュリティや有効期限、ドメインやパスの制御など、多くの場面で活用されます。設定は session_start() を呼ぶ前に行う必要があり、正しく使うことで安全で使いやすいセッション管理が可能になります。初心者でもこの記事を参考に、用途に合わせた適切なセッション設定を行いましょう。
