[php]cookieとsessionのSameSite設定方法

難儀した

cookieの場合

setcookie('testcookie_key', 'testcookie_value', [
    'expires' => 0,
    'path' => '/',
    'samesite' => 'strict',
    'secure' => true,
    'httponly' => true,
]);

sessionの場合

session_set_cookie_params(0, '/; SameSite=strict', '', true, true);
session_start();
$_SESSION['testsession_key'] = 'testsession_value';

sessionを作る場合も結局cookieへの登録になる。「session_set_cookie_params」のパラメータはここを参照。cookieと大差ないというかほぼ一緒ですねこれ。

session_start()の後に任意のsessionを作っていく。session_start()が無くても作れるけどパラメータの設定のことがあるからちゃんと書いた方がいい。

おまけ:pathの使い道

cookieもsessionも共通。

session_set_cookie_params(0, '/; SameSite=strict', '', true, true);

pathが「/」だとドメイン直下全てで使用できる。

session_set_cookie_params(0, '/contact/; SameSite=strict', '', true, true);

「/contact/」とすると「https://ドメイン/contact/」以下で使用できる。ドメイン直下や別ディレクトリに行くと使えない。

そんな感じで、フォームで使いたいときとかギミックを仕込みたいときとかに。

コメント

タイトルとURLをコピーしました