PHP-cookies

Cookiet käytetään usein käyttäjien tunnistamiseen.

Mitä cookie on?

Cookiet käytetään usein käyttäjien tunnistamiseen. Cookie on pieni tiedosto, jonka palvelin jättää käyttäjän tietokoneeseen. Kun sama tietokone pyytää sivua selaimen kautta, se lähettää myös cookien. PHP:n avulla voit luoda ja hakea cookien arvoja.

Miten luodaan cookie?

setcookie() -funktiota käytetään cookien asettamiseen.

Huomautus:setcookie() -funktiota on käytettävä <html>-tagin ennen.

Syntaksi

setcookie(name, value, expire, path, domain);

Esimerkki

Esimerkissä luomme "user"-nimisen cookien, asetamme sille arvon "Alex Porter" ja määräämme, että cookie vanhenee tunnin kuluttua:

<?php 
setcookie("user", "Alex Porter", time()+3600);
?>
<html>
<body>
</body>
</html>

Huomautus:Cookien lähettäessä arvot URL-koodataan automaattisesti ja palautettaessa ne dekoodataan automaattisesti (URL-koodauksen estämiseksi käytä setrawcookie() -funktiota sen sijaan).

Miten haetaan cookien arvo?

PHP:n $_COOKIE-muuttuja käytetään cookien arvojen hakemiseen.

Esimerkissä olemme hakenut "user"-nimisen cookien arvon ja näyttäneet sen sivulla:

<?php
// Tulosta cookie
echo $_COOKIE["user"];
// Näytä kaikki cookiet
print_r($_COOKIE);
?>

Esimerkissä käytämme isset() -funktiota varmistaaksemme, että cookie on asetettu:

<html>
<body>
<?php
if (isset($_COOKIE["user"]))
  echo "Tervetuloa " . $_COOKIE["user"] . "!\n";
else
  echo "Tervetuloa vieraalle!\n";
?>
</body>
</html>

Miten poistaa cookie?

Poistaessa cookiea, sinun tulisi muuttaa päättymisaikaa menneeseen ajankohtaan.

Poistettujen esimerkki:

<?php 
// aseta päättymisaika tunti sitten
setcookie("user", "", time()-3600);
?>

Mitä tehdä, jos selain ei tue cookieta?

Jos sovelluksesi käsittelee selaimia, jotka eivät tue cookieta, sinun täytyy käyttää muita menetelmiä tiedon siirtämiseen yhdestä sivusta toiseen sovelluksessa. Yksi tapa on siirtää tietoja lomakkeen kautta (tarkemmin lomakkeista ja käyttäjän syötteistä olemme käsitelleet näitä jo aiemmin tässä kurssissa).

Seuraava lomake lähetetään "welcome.php"-sivulle, kun käyttäjä napsauttaa "Lähetä"-painiketta:

<html>
<body>
<form action="welcome.php" method="post">
Nimi: <input type="text" name="name" />
Ikä: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>

Nouda "welcome.php"-tiedostosta arvoja tällä tavalla:

<html>
<body>
Tervetuloa <?php echo $_POST["name"]; ?>.<br />
Olet <?php echo $_POST["age"]; ?> vuotta vanha.
</body>
</html>