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
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
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.
Kokeile kuvailtua temppua.