Umiddelbar setting av informasjonskapsler i PHP
For at en informasjonskapsel som nettopp er satt umiddelbart
skal vises i matrisen $_COOKIE, kan man
bruke et lurt triks.
Trikset er som følger: først setter vi
informasjonskapselen med setcookie, og deretter
skriver vi den manuelt inn i matrisen $_COOKIE:
<?php
setcookie('str', 'eee');
$_COOKIE['str'] = 'eee';
var_dump($_COOKIE['str']); // vil umiddelbart vise 'eee'
?>
For å unngå at informasjonskapselen sendes til nettleseren hver gang, kan man plassere koden som setter informasjonskapselen innenfor en betingelse. Hvis informasjonskapselen ikke finnes, setter vi den:
<?php
if (!isset($_COOKIE['str'])) { // hvis informasjonskapselen ikke finnes
setcookie('str', 'eee');
$_COOKIE['str'] = 'eee';
}
echo $_COOKIE['str']; // vil vise 'eee'
?>
La oss diskutere hvordan dette fungerer. Ved første
besøk på siden vil vi treffe if-betingelsen,
sette informasjonskapselen i nettleseren og umiddelbart skrive
den til $_COOKIE. Deretter vil verdien vi skrev manuelt
blitt vist via echo.
Ved påfølgende besøk på siden vil vi ikke treffe
if-betingelsen, men i $_COOKIE vil innholdet
vår informasjonskapsel være tilstede, allerede ankommet fra nettleseren.
På denne måten vil $_COOKIE inneholde
vår informasjonskapsel både ved første besøk og ved
påfølgende besøk.
Prøv ut trikset som er beskrevet.