PHPでのクッキーの即時設定
設定したクッキーを即座に配列 $_COOKIE に
反映させるためには、巧妙なテクニックを
使用することができます。
このテクニックの要点は、まず setcookie で
クッキーを設定し、その後、手動で配列
$_COOKIE に書き込むことです:
<?php
setcookie('str', 'eee');
$_COOKIE['str'] = 'eee';
var_dump($_COOKIE['str']); // すぐに 'eee' を出力します
?>
クッキーが毎回ブラウザに送信されないようにするためには、 クッキーの書き込みを条件文内で行うことができます。 そのようなクッキーが存在しない場合、設定します:
<?php
if (!isset($_COOKIE['str'])) { // クッキーが存在しない場合
setcookie('str', 'eee');
$_COOKIE['str'] = 'eee';
}
echo $_COOKIE['str']; // 'eee' を出力します
?>
これがどのように機能するか説明しましょう。
ページに初めてアクセスしたとき、if 内に入り、
ブラウザにクッキーを設定すると同時に、
すぐに $_COOKIE に書き込みます。
その後、echo を通じて、
手動で書き込んだ値が出力されます。
次回以降のページアクセスでは、
if 内には入りませんが、
$_COOKIE にはブラウザから送信されてきた
クッキーが含まれています。
このようにして、初回アクセスでも、
その後のアクセスでも、$_COOKIE には
私たちのクッキーが存在することになります。
説明されたテクニックを試してみてください。