Návrh a tvorba WWW Cvičení 6 PHP (session, cookie)
Session Protokol http je bezstavový a proto neumí udržet relaci mezi klientem a serverem. Tento fakt lze v prostředí PHP vyřešit prostřednictvím „session“. Jedná se o soubor dat, který se ukládají na straně serveru. Data jsou jednoznačně identifikována. Identifikátor si vyměňují při komunikaci klient se serverem prostřednictvím http protokolu (v hlavičce nebo v url adrese, záleží na nastavení prostředí php). funkce session_start() inicializuje relaci, případně navazuje na relaci již existující Hodnoty session jsou dostupné v globálním poli $_SESSION. session_start(); session_start(); /* inicializace session */ $_SESSION[‘id’] = ‘st123456’; /* nastavení hodnoty id */ echo $_SESSION[‘id’]; /* výpis hodnoty */ unset($_SESSION[‘id’]) /* odebrání id ze session */ $_SESSION = array(); /* vyprázdnění pole session */ session_destroy(); /* odebrání session */
Třída auth I. zdrojový kód: blok_6/class/auth.php
Třída auth II. zdrojový kód: blok_6/class/auth.php
Třída auth III. zdrojový kód: blok_6/class/auth.php
Hlavičky http protokolu V PHP můžeme modifikovat hlavičku http protokolu. Veškerá modifikace musí proběhnout dříve, než je ze serveru cokoliv posláno klientovi. Hlavička – řetězec ekvivalentní http hlavičce Nahrazení – při true nahrazuje hlavičku stejného jména header(hlavička, nahrazení); header(“Location: http://www.seznam.com/”); /* přesměrování */
Přihlášení zdrojový kód: blok_6/c01.php
Odhlašení zdrojový kód: blok_6/c02.php
Přihlášení - formulář zdrojový kód: blok_6/include/prihlaseni.php
Cookie Cookies jsou malé textové soubory, které se ukládají na straně klienta. Těmto souborům lze nastavit další atributy, jako je například životnost, platnost pro určitou subdomenu, atd. Jméno Hodnota Platnost Cesta – cesta, ze které je cookie dostupná Doména – doména, ze které je cookie dostupná Secure – při true, platnost pouze pro https Httponly – při true, cookie přístupná pouze přes http protokol Hodnoty cookies jsou dostupné v globálním poli $_COOKIE. Setcookie(jmeno, hodnota, platnost, cesta, doména, secure, httponly); Setcookie (‘id’, ‘st123456’,time()+14400,’/’); if (isset ($_COOKIE[‘id’])) { echo $_COOKIE[‘id’]; }
Domácí úkol Vytvořte sekci, do které bude povolen přístup pouze přihlášeným uživatelům.
Kontrolní otázky Co znamená, že protokol HTTP je bezstavový? Co jsou to cookies? Kde se ukládají data, když použiji SESSION? K čemu slouží funkce header()? Kdy mohu modifikovat hlavičku HTTP protokolu?