Manuál PHP | ||
---|---|---|
Předcházející | Další |
setcookie() definuje cookie, který se pošle spolu s hlavičkami. Cookies se musí odeslat jako první ze všech HTTP hlaviček (to je omezení cookies, ne PHP). Volání této funkce musíte tudíž umístit před <html> či <head> tagy.
Všechny argumenty kromě argumentu name jsou nepovinné. Pokud je přítomný pouze argument name, u klienta se smaže cookie tohoto jména. Kterýkoliv argument můžete také nahradit prázdným řetězcem (""), čímž tento argument přeskočíte. Argumenty expire a secure jsou celočíselné a nedají se přeskočit prázdným řetězcem. Místo toho použijte nulu (0). Argument expire je běžné Unixové celočíselné vyjádření času, jak je vrací funkce time() či mktime(). Argument secure indikuje, že by se tento cookie měl přenášet pouze po zabezpečeném HTTPS spojení.
Běžné zádrhele:
Cookies jsou přístupné až při dalším načtení stránky, na které přístupné být mají.
Cookies se musí mazat se stejnými parametry, se kterými byly odeslány.
V PHP 3 se vícenásobná volání setcookie() v jednom skriptu provedou v opačném pořadí. Pokud se pokoušíte smazat jeden cookie pře odesláním jiného, měli byste umístit vložení před smazání. V PHP 4 se vícenásobná volání setcookie() provedou v tom pořadí, jak jsou volána.
Několik příkladů, jak posílat cookies:
Následují příklady mazání cookies z předchozí ukázky:
Všimněte si, že hodnotová část cookie se při odeslání cookie automaticky url-zakóduje, a při přijetí se automaticky dekóduje a přiřadí proměnné stejného jména, jako je jméno cookie. Pokud chcete vidět obsah našeho zkušebního cookie, použijte některý z následujících příkladů:
Cookies obsahující pole můžete také odeslat tak, že za název cookie napíšete hranaté závorky. Účinkem tohoto je odeslání tolika cookies, kolik má vaše pole prvků, ale když váš skript tyto cookies přijme, hodnoty se umístí v poli stejného jména, jako jsou vaše cookies:
setcookie ("cookie[three]", "cookiethree"); setcookie ("cookie[two]", "cookietwo"); setcookie ("cookie[one]", "cookieone"); if (isset ($cookie)) { while (list ($name, $value) = each ($cookie)) { echo "$name == $value<br>\n"; } } |
Více informací o cookies viz specifikace cookies na http://www.netscape.com/newsref/std/cookie_spec.html.
Microsoft Internet Explorer 4 se Service Packem 1 zpracovává chybně cookies, které mají nastavený argument path.
Netscape Communicator 4.05 a Microsoft Internet Explorer 3.x zřejmě nezpracují cookies správně, pokud nejsou nastaveny argumenty path a time.
Předcházející | Domů | Další |
headers_sent | Nahoru | Hyperwave functions |