Autor | Zpráva | ||
---|---|---|---|
MSTRmt Profil |
Cookies jsou proměnné, uložené na straně klienta, jenž se předají v hlavičkách prohlížeče tehdy, kdy uživatel otevírá server, které toto Cookie vytvořil. Cookies vytvoříme funkcí setcookie(). Syntaxe:
<?php setcookie(string $name, string $value[, int $expire[, string $path[, string $domain[, bool $secure]]]]) ?> Příklad: <?php if(setcookie("Moje cookie", "Hodnota", time()+60*60*24)) echo "Cookie bylo vytvořeno."; ?> time() slouží k určení aktuálního času
v UNIX formátu. K tomuto času se přičte 24*60*60 sekund (24 hodin). Když je uložených 301 Cookies, nejstarší Cookie se vymaže, takže toto Cookie nemusí vydržet celý den. Také se někteří uživatelé bojí Cookies a proto mají zakázané jejich ukládání. Cookie se mění stejně jako se vytváří, když chtějí údaj změnit vytvoří Cookie se stejným jménem a jinými vlastnostmi. Při změně času na aktuální čas nebo minůlý čas se Cookie vymaže. Příklad: <?php if(setcookie("Moje cookie", "Vymazáno", time())) echo "Cookie bylo vymazáno."; ?> Příklad: <?php echo "Hodnota cookie je: " . $_COOKIE['Moje cookie']; //Vypíše Hodnotu cookie se jménem Moje cookie ?> |
||
tiso Profil |
#2 · Zasláno: 11. 11. 2015, 15:45:16
MSTRmt: setcookie má 7 parametrov
|
||
Martin2 Profil * |
#3 · Zasláno: 11. 11. 2015, 16:57:54
MSTRmt:
„Parametr path … (Při vynechaném údaji se použije zápis "/"“ Není pravda. Výchozí je aktuální adresář. „$HTTP_COOKIE_VARS[], dnes to pořád funguje, ale lepší je používat $_COOKIE[].“ Taky není pravda. Direktiva register_long_arrays byla již odstraněna. Tuším ve verzi 5.4 |
||
Dusann Profil |
#4 · Zasláno: 11. 11. 2015, 21:01:14
Mám dotaz:
Cez setcookie() sa posiela cookie s atribútom Expires ktorý vychádza z času servera. Ak je rozdiel medzi časom serveru a časom uživateľového PC, tak môže nastať problém nie ? Napríklad čas serveru je 19:20, čas na klientovom PC je 19:45, tak cookie s platnosťou 20min bude u klienta už okamžite po prijatí neplatné. Ak ale odošleme cookie s atribútom Max-Age, tak 20min by sa malo pripočítať k času kedy klientov browser cookie prijal. Z tohto dôvodu sa mi nejaví výhodné používať setcookie(), ale rovno header() kde je možné cookie odoslať s atribútom Max-Age, ideálne ale s Max-Age + Expires kôli kompatibilite s IE, ktorý vraj Max-Age nepodporuje. K setcookie() ešte doplním - ak sa pre parameter value použije prázdny string alebo boolean false, PHP odošle vždy neplatné cookie, nezávisle na parametri expire. |
||
Martin2 Profil * |
#5 · Zasláno: 12. 11. 2015, 00:07:48
Dusann:
„Cez setcookie() sa posiela cookie s atribútom Expires“ Od verze 5.5 používá PHP oba parametry. Expires i Max-Age. „Napríklad čas serveru je 19:20, čas na klientovom PC je 19:45“ V praxi dost nepravděpodobné. Chyby času klientů jsou v řádu setin sekund, ne desítek minut. Řešíš neexistující problém. |
||
Časová prodleva: 8 let
|
0