Načrtovanje in razvoj spletnih aplikacij

Piškotki v PHP

Piškotek (angl. cookie) je majhna datoteka, ki jo brskalnik shrani na uporabnikov računalnik. Piškotke uporabljamo za dolgoročno shranjevanje podatkov o uporabniku (dlje časa, kot seja). Datoteka piškotka lahko vsebuje poljubne vrednosti, ki jih v našem primeru nastavi PHP skripta, namenjena pa je shranjevanju manjše količine podatkov. Identifikator seje se shrani kot piškotek in ko isti računalnik zahteva ogled strani z brskalnikom, pošlje strežniku tudi piškotek.

V PHP piškotek ustvarimo s funkcijo:

setcookie(ime, vrednost, veljavnost, pot, domena, varnost);

Parameter Opis
ime Zahtevan. Določi ime piškotka.
vrednost Zahtevan. Določi vrednost piškotka.
veljavnost Opcijski. Določi življensko dobo piškotka. Če parameter ni določen, se piškotet uniči s koncem seje. Primer: time()+3600*24*30 določi, da bo piškotet potekel čez 30 dni
pot Opcijski. Določi pot lokacije piškotka na serverju.
domena Opcijski. Določi imenski naslov lokacije piškotka.
varnost Opcijski. TRUE določi, da se piškotek lahko pošilja samo po varni povezavi HTTPS. Privzeto je nastavljen na FALSE.

Piškotek moramo v kodi ustvariti pred kakršnimkoli izpisom na strani.

Vrednost piškotka dobimo z uporabo $_COOKIE['ime'];.
Piškotke uničimo s setcookie(), kjer v parameter veljavnosti vpišemo čas, starejši od trenutnega.

Primer uporabe piškotka:

  • kreiranje piškotka
<?php
   //Izračun 60-tega dneva v prihodnosti
   //sekunde * minute * ure * dni + trenutni čas
   $vDvehMesecih = 60 * 60 * 24 * 60 + time(); 
   setcookie('zadnjiObisk', date("G:i - m/d/y"), $vDvehMesecih); 
?>
  • branje piškotka
<?php
   if(isset($_COOKIE['zadnjiObisk']))
      $visit = $_COOKIE['zadnjiObisk']; 
   else
      echo "Trenutno nimate nobenega piškotka!";

   echo "Vaš zadnji obisk ". $visit;
?>
Trenutno nimate nobenega piškotka!
  • brisanje piškotka
<?php
   // Nastavitev časa poteka do pred eno uro
   setcookie ("TestCookie", "", time() - 3600);
?>
  • izpis vseh piškotkov
<?php
   // Izpis vseh piškotkov
   print_r($_COOKIE);
?>

Primer kreiranja polja piškotkov:

<?php
   setcookie("piskotek[prvi]","prvi piškotek");
   setcookie("piskotek[drugi]","drugi piškotek");
   setcookie("piskotek[treji]","tretji piškotek");

   // izpis piškotkov (po osvežitvi strani)
   if (isset($_COOKIE["piskotek"])) {
      foreach ($_COOKIE["piskotek"] as $ime => $vrednost){
      echo "$ime : $vrednost <br />";
      }
   } 
   else echo "Trenutno nimate nobenega piškotka!";
?>
Trenutno nimate nobenega piškotka!