PHPでのクッキーの即時設定

設定したクッキーを即座に配列 $_COOKIE に 反映させるためには、巧妙なテクニックを 使用することができます。 このテクニックの要点は、まず setcookie で クッキーを設定し、その後、手動で配列 $_COOKIE に書き込むことです:

php<?php
  setcookie('str', 'eee');
  $_COOKIE['str'] = 'eee';
  
  var_dump($_COOKIE['str']); // すぐに 'eee' を出力します
?>

クッキーが毎回ブラウザに送信されないようにするためには、 クッキーの書き込みを条件文内で行うことができます。 そのようなクッキーが存在しない場合、設定します:

php<?php
  if (!isset($_COOKIE['str'])) { // クッキーが存在しない場合
    setcookie('str', 'eee');
    $_COOKIE['str'] = 'eee';
  }
  
  echo $_COOKIE['str']; // 'eee' を出力します
?>

これがどのように機能するか説明しましょう。 ページに初めてアクセスしたとき、if 内に入り、 ブラウザにクッキーを設定すると同時に、 すぐに $_COOKIE に書き込みます。 その後、echo を通じて、 手動で書き込んだ値が出力されます。

次回以降のページアクセスでは、 if 内には入りませんが、 $_COOKIE にはブラウザから送信されてきた クッキーが含まれています。 このようにして、初回アクセスでも、 その後のアクセスでも、$_COOKIE には 私たちのクッキーが存在することになります。

Задание 1

説明されたテクニックを試してみてください。