Avatar
pgarsky
Člen
Avatar
pgarsky:

Ahoj, nevěděl jsem kam to napsat, tak to píšu sem. Mohl by mi někdo vysvětlit, v jakém jazyce a jak se používá obsah cookies? Př. Část kódu + vysvětlení. Děkuji :)

 
Odpovědět 27. července 12:06
Avatar
Patrik Smělý (SogoCZE)
Tým ITnetwork
Avatar
Odpovídá na pgarsky
Patrik Smělý (SogoCZE):

Ahoj, cookies se dají využívat jak v backendu (serverová část - PHP, ASP.NET, NodeJS, ...) tak i na straně frontendu (JavaScript - script běžící přímo v prohlížeči). Jedná se o malé datové soubory které se ukládají uživateli do počítače a při každém navštívení téhož serveru (například ITnetwork.cz) se soubory opět pošlou zpět na server a ten s nimi může dále pracovat. Jak jsem již psal tak k těmto souborům má přístup i JavaScript (pokud tedy nemají nastavený atribut http only) takže je může vytvářet, zobrazovat a popřípadě i měnit.

Cookies mají i dobu vypršení čili například nastavíš že sušenka má existovat za dva dny takže za následující dva dny se sama vymaže (tato funkce se hodí například při přihlašování - chceš aby byl uživatel přihlášen například dva týdny - a následovně musel znova použít své heslo k přihlášení).

Příklad uvedu v jazyce PHP (serverový jazyk):

setcookie("testovaciSusenka", "hodnota", time() + (86400 * 30), "/");

Fukce setcookie sušenku vytvoří a uživateli se stáhne do počítače, tato funkce bere několik parametrů a to: jméno sušenky, hodnotu, počet sekund do data expirace - (86400 * 30) = 1 den, cesta - sušenky se dají setnout například jen na určitou URL například na /login. Funkce obsahuje i další atributy ale klíčové jsou ty co jsem vypsal.

Nyní se přisuneme k části jak sušenku získat v PHP - respektive její hodnotu dle jména sušenky.

$obsahSusenky = $_COOKIE["testovaciSusenka"]; //Náš obsah bude string "hodnota".

K získání sušenky se v PHPčku nachází globální asociativní pole $_COOKIE ve kterém se jako klíč nachází jméno sušenky.

S upravováním sušenky je to pak trochu složitější (na straně serveru) jelikož musíš předchozí sušenku přepsat (vytvoříš novou sušenkou se stejným jménem) ale tím bohužel ztratíš původní expiraci tudíž pokud by si chtěl zachovat původní expiraci musel by si do hodnoty sušenky vložit i její původní expiraci a základě toho vypočítat novou expiraci která by byla shodná s původní.

A pokud by si chtěl sušenku odebrat (opět na straně server) tak je zase zapotřebí původní přepsat a nastavit nové expiraci na -1.

Zde se můžeš podívat na syntaxi v JavaScriptu.

Editováno 27. července 13:05
Akceptované řešení
+20 Zkušeností
Řešení problému
Nahoru Odpovědět  +1 27. července 13:03
PHP můj oblíbený jazyk......
Avatar
pgarsky
Člen
Avatar
Odpovídá na Patrik Smělý (SogoCZE)
pgarsky:

Takže jestli jsem to správně pochopil, sušenky se používají jednak k jezení a jednak k zaznamenávání dat uživatele ? :D

 
Nahoru Odpovědět 27. července 13:23
Avatar
Patrik Smělý (SogoCZE)
Tým ITnetwork
Avatar
Odpovídá na pgarsky
Patrik Smělý (SogoCZE):

Ano, přesně tak :). - obvykle se používají například k uchování určitého tokenu či idečka aby se dal daný uživatel například vyhledat v databázi.

Nahoru Odpovědět 27. července 13:28
PHP můj oblíbený jazyk......
Avatar
Honza Bittner
Redaktor
Avatar
Honza Bittner:

Pokud bys chtěl uchovávat data aplikace či jiné věci přímo v prohlížeči uživatele (neviditelné ze strany serveru), dá se využít v moderních prohlížečích také local storage (dokud sám nevymažeš) či session storage (smaže se při zavření okna/prohlížeče).

Nahoru Odpovědět  +2 27. července 15:04
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
Filip Šohajek
Redaktor
Avatar
Odpovídá na Patrik Smělý (SogoCZE)
Filip Šohajek:

No, cookies bych úplně na uchování ID uživatele nepoužíval. Cookies se spíš používají například na uložení nastavení jazyka stránky.

Editováno 27. července 15:17
 
Nahoru Odpovědět 27. července 15:17
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Odpovídá na Filip Šohajek
Adam Ježek:

Jde o to, jak je to udělané. Pokud je v cookie uloženo ID uživatele, a je přístupná i ze strany prohlížeče, tak pouhým přepsáním se můžu přihlásit jako admin (pokud trefím jeho ID) - a to je rozhodně hodně špatný řešení.
Pokud je například přístupná pouze ze strany serveru, nebo to máš dostatečné ošetřené (například v nich není uložené ID uživatele, ale jenom ID session + čas započatí session/něco dalšího pro kontrolu a IDčko se pak následně tahá z DB, kde jsou uložená sessionID) tak by se to dalo použít pro uložení informace o přihlášeném uživateli.

Editováno 27. července 15:39
Nahoru Odpovědět  +2 27. července 15:38
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Avatar
Taskkill
Redaktor
Avatar
Odpovídá na Honza Bittner
Taskkill:

Nebo dokud ti ho nesmaze prohlizec. Coz Safari treba dela.

 
Nahoru Odpovědět 28. července 16:43
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.