4.8. Infokager (cookies)

Infokager er små stykker information, der gemmes hos brugeren, og kan hentes frem igen af netlæseren ved det næste besøg. De kan bruges til mange formål, eksemplet nedenunder viser hvordan man kan spare en bruger for at indtaste den samme information igen i en formular.

Programmeringsmæssigt skal man først indsamle informationen, via en FORM-formular, denne udfører en anden HTML-side, hvor man så kan se den indsamlede information, og gemme informationen hos brugeren. Gemningen af informationen, med PHP-funktionen setcookie() skal ske før der overhovedet er skrevet andet ud, incl. den begyndende DTD og <html>-mærket. Informationen gemmes som regel i en tekstfil et administrationskatalog for netlæseren i brugerens hjemmekatalog, fx ~/.netscape/cookies.

Eksemplet indeholder to sider: bestilling.php og bestilt.php. bestilling.php er siden brugeren kommer til og indtaster oplysningerne, og bestilt.php er den side som kvitterer for indtastningen. De to filer udgør et komplet eksempel, der kører.


Siden "bestilling.php":
<html><head></head><body>
<? 
  $navn=$HTTP_COOKIE_VARS["navn"];
  $epost=$HTTP_COOKIE_VARS["epost"];
?>
<FORM method="post" action="bestilt.php">
  Navn: <INPUT name="navn" value="<? echo $navn; ?>" >
  Epost: <INPUT name="epost" value="<? echo $epost; ?>" >
  <INPUT type="submit" value="Bestil">
</FORM> </body>

"bestilling.php" indhenter information om navn og epostadresse, via indtastning. Hvis vi tidligere har fået informationen og gemt den i infokager hos brugeren, så vil eksemplet udfylde indtastningen på forhånd med disse værdier. Dette sker ved at hente informationen via PHPs systemvariabel HTTP_COOKIE_VARS, som ved aktiveringen af siden allerede indeholder alle infokager for netstedet, og give det som værdier med VALUE tildelinger, og brug af PHP echo-udskrivning.


Siden "bestilt.php":
<?
  setcookie("navn",$navn,time()+3600*24*365,"/",".ditfirma.dk");
  setcookie("epost",$epost,time()+3600*24*365,"/",".ditfirma.dk");

echo "<html><head></head><body>Dit navn: " . $navn . "<br>Din epostadresse: " . $epost . "</body>" ;
?>

bestilt.php aktiveres med tryk på "Bestil"-knappen fra bestilling.php. Den får med over alle variable fra formularen i bestilling.php, og det første vi gør er at sende infokagerne til brugeren med setcookie().

Parametrene er: 1: navnet på infokagen, 2: værdien, 3: hvor længe infokagen gælder, i eksemplet et år (i sekunder), 4: en sti hos værten, som regel "/" (og der er netlæsere, der ikke forstår andet), 5: domænenavnet for værten, "." betyder incl alle underdomæner. Dette er navnet på de web-servere der kan få fat på infokagen igen. Hvis du leger med eksemplet hér, så husk at ændre domænenavnet til dit eget domænenavn.

Dernæst udskriver vi et lille HTML-skript med de indtastede oplysninger. Bemærk "." bruges til at sætte flere strenge sammen til én streng i PHP, derved undgås mange echo sætninger.