Cookie a session
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
Kol
áčky, sezení
Martin Klíma
UDRŽOVÁNÍ STAVU
APLIKACE
Udržování stavu aplikace
1.
Pomocí skrytých polí (viz příklad wizard)
2.
Pomocí obohacování odkazů
3.
Pomocí cookies
4.
Pomocí sessions
Obohacování odkazů
Veškeré odkazy z dokumentu budou obohaceny o
identifikátor s daty sezení
Není to moc elegantní
Může to selhat
Pokud se děje automaticky, náročné na výkon
<a href="dalsi_stranka.php">Další stránka</a><form action="obsluha.php" method="post"></form>
<a href="dalsi_stranka.php?session_id=XXX">Další stránka</a><form action="obsluha.php?session_id=XXX" method="post"></form>
Cookie
Informace uložená u klienta
Posílá jí server
Jen ten, kdo ji poslal, ji může opět přečíst
Server
Client
Lokální DB
cookies
GET /
1
HTTP/1.0 200 OK
Set-Cookie: jmeno=Franta
2
PHP: setcookie(
“name“, “Franta“);
GET /
Cookie: jmeno=Franta
3
jmeno: Franta
PHP: $jmeno =
$_COOKIE[‘jmeno’];
Pomocí cookies
Informace ulo
žená serverem na klientovi
Klient posílá tuto informaci zpět pokud
– URI spadá do vymezeného rozsahu
– Doména odpovídá
– Nevypršela platnost
– Je zaručena odpovídající bezpečnost
Využití:
– Počítadlo přístupů
– Další statistiky
– Udržování stavu aplikace
Signatura funkce setcookie
setcookie (
string $name
[, string $value = ""
[, int $expire = 0
[, string $path = ""
[, string $domain = ""
[, bool $secure = false
[, bool $httponly = false ]
]]]]] )
Unix timestamp, pokud 0, pak do
konce života prohlížeče
Omezení jen na určenou cestu
(adresář), např. /galerie/
Zobecnění pro celou
poddoménu
, např. cvut.cz
Pokud true, bude poslána jen
přes https (bezpečný kanál)
Pokud true, nebude dostupná
pro JavaScript, to je
bezpečnostní opatření.
Cookies
<?php
setcookie("mojecookie1","hodnota1");
setcookie("mojecookie2","hodnota2");
?>
<!doctype html>
<html>
<head>
<title>Nastav Cookie</title>
</head>
<body>
<p>Tento skript nastaví cookie
a přečte existující cookie.</p>
<?php
foreach ($_COOKIE AS $key=>$value) {