Evästeiden välitön asettaminen PHP:ssä

Jotta asetettu eväste ilmestyisi välittömästi taulukkoon $_COOKIE, voidaan käyttää ovelaa temppua. Tempun ydin on seuraava: ensin asetetaan eväste funktiolla setcookie, sitten kirjoitetaan se manuaalisesti taulukkoon $_COOKIE:

php<?php
  setcookie('str', 'eee');
  $_COOKIE['str'] = 'eee';
  
  var_dump($_COOKIE['str']); // tulostaa välittömästi 'eee'
?>

Jotta evästettä ei lähetettäisi selaimelle joka kerta, voi evästeen kirjoittamisen sijoittaa ehtolauseen sisään. Jos evästettä ei ole, kirjoitetaan se:

php<?php
  if (!isset($_COOKIE['str'])) { // jos evästettä ei ole
    setcookie('str', 'eee');
    $_COOKIE['str'] = 'eee';
  }
  
  echo $_COOKIE['str']; // tulostaa 'eee'
?>

Keskustellaanme kuinka tämä toimii. Ensimmäisellä kerralla sivulle tultaessa päädymme if-lauseeseen, asetamme evästeen selaimelle ja kirjoitamme sen välittömästi taulukkoon $_COOKIE. Seuraavaksi echo-komennolla tulostetaan manuaalisesti kirjoittamamme arvo.

Seuraavilla kerroilla sivulle tultaessa emme päädy if-lauseeseen, mutta taulukossa $_COOKIE on evästeemme, joka on jo tullut selaimesta. Siten sekä ensimmäisellä että seuraavilla kerroilla taulukossa $_COOKIE on evästeemme.

Задание 1

Kokeile kuvailtua temppua.