PHP funkcie. Setcookie – odošle súbor cookie PHP knižnicu pre prácu s cookies

  • 07.03.2024

Ahojte všetci!

Som späť na správnej ceste! V poslednej dobe ma zmeny v živote často prinútili odísť z blogu, no napriek tomu som tu a nikam nejdem! Čoskoro bude séria veľmi užitočných a poučných lekcií o zarábaní peňazí! Nenechajte si ujsť! Medzitým budem hovoriť o tom, ako pracovať s cookies v PHP. Ako môžete jednoducho vytvárať, mazať alebo aktualizovať cookies v php?

V nasledujúcich článkoch sa pozrieme na to, ako fungujú cookies vo WordPress. Medzitým sa pre všeobecný vývoj pozrime na samotný koncept súborov cookie.

Nebudem písať frázy o tom, ako sa cookies prekladajú ako cookies a tak ďalej. Táto informácia je podľa mňa úplne zbytočná. Poviem to inak, cookies sú nejaký druh informácií, ktoré sú uložené vo vašom prehliadači.

Napríklad sa rozhodnete hlasovať v ankete. Potom chcete znova hlasovať, ale namiesto prijatia hlasu sa zobrazí správa: „Už ste hlasovali“. Zdalo by sa, že sme sa na stránke nezaregistrovali, odkiaľ pochádza informácia, že sme už hlasovali?

Všetko je to o sušienkach. Pri hlasovaní sa do vášho prehliadača pridá malý súbor s informáciami, že ste už hlasovali. A pri novom hlasovaní skript na serveri skontroluje, či takýto súbor máte. Ak áno, znamená to, že ste už hlasovali. Je to jednoduché.

Ako vytvoriť cookies v php?

Cookies sa vytvárajú v php vďaka funkcii súbor cookie. Táto funkcia akceptuje nasledujúce parametre:

setcookie („Názov“, „Hodnota“, ​​„Termín“ , „Cesta“ , „Doména“, „Zabezpečenie“);

  • Je tu len jeden povinný parameter - „Názov“.
  • „Hodnota“ označuje hodnotu súboru cookie, ako už všetci uhádli.
  • Trvanie – ako dlho cookies vydržia? Po uplynutí platnosti sa cookie automaticky vymaže. Termín môže byť neurčitý, ak neuvedieme hodnotu „termín“. Termín je stanovený len v sekundách!
  • Cesta - z ktorého adresára bude súbor cookie prístupný. (zvyčajne nešpecifikované a dostupné zo všetkých adresárov)
  • Doména – doména sa zadáva automaticky. Ak potrebujete získať prístup k súborom cookie na subdoménach, môžete zadať „.site“. V tomto prípade bude súbor cookie dostupný na všetkých stránkach s adresami: meno.stránka
  • Bezpečnosť – ak je napísané TRUE, tak sa cookies prenášajú cez šifrované spojenie (ssl).

Vytváranie cookies v PHP

Ak sa teraz pozrieme do prehliadača (používam mozillu), vidíme súbor cookie v akcii:

Ako vidíte, cookies boli nastavené presne na 1 deň, s názvom, ktorý sme potrebovali, a hodnotou, ktorú sme potrebovali.

Ako aktualizovať php cookies?

Povedzme, že potrebujeme aktualizovať hodnotu súboru cookie. Tie. názov bude rovnaký, ale musí sa zmeniť hodnota alebo doba platnosti. V tomto prípade opäť potrebujeme funkciu súbor cookie.

Operácia sa nelíši od operácie vytvárania cookies. Podobný kód píšeme rovnakým spôsobom, ale so zmenenými údajmi:

Teraz sa pozrime, čo obsahuje prehliadač:

Ako vidíte, aktualizácia súborov cookie bola úspešná!

Ako čítať/získať php cookies?

Skutočnosť, že sa súbor cookie zobrazuje v prehliadači, je dobrá, ale vytvárame ho, aby sme ho neskôr použili v našich skriptoch. Ako teda získate koláčik? Na tento účel existuje globálna škála súborov cookie $_COOKIE, ktorý obsahuje všetky vytvorené cookies. Je ľahké ich kontaktovať – stačí poznať ich meno.

Súbor cookie bude teraz vymazaný!

Jedna dôležitá poznámka, o ktorej nikto nehovorí. Keď som sa prvýkrát začal učiť programovať, vymazal som cookies týmto spôsobom. Vošiel som do prehliadača a súbor cookie zostal. Prehľadal som všetky fóra - tento problém sa vyskytuje často, ale všetci odpovedajú ako: "Hmm, neviem, mne to funguje." A dôvod je tento: cookie sa vymaže, ale nie zo súborov používateľa. Tam zostáva. A keď otvoríte prehliadač, uvidíte ho, ale ak k nemu pristupujeme pomocou $_COOKIE["wpguru"], potom bude výsledok 0. Takto môžete jednoducho skontrolovať, či bol súbor cookie odstránený.

To je z mojej strany všetko, v blízkej dobe pribudnú ďalšie články. S najväčšou pravdepodobnosťou v nasledujúcom článku popíšem, aké plány na blog čakajú, a podrobne vám poviem o sérii článkov o zarábaní peňazí. Všetko bude online, t.j. Zarábam peniaze a píšem článok. Nevysielam len teóriu.

Tak počkaj.

Do skorého videnia!

int setcookie (názov reťazca [, hodnota reťazca [, platnosť int [, cesta reťazca [, doména reťazca [, int secure]]]]])

Setcookie() určuje súbor cookie, ktorý sa má odoslať spolu so zvyškom informácií v hlavičke predtým akékoľvek iné hlavičky (toto je obmedzenie súborov cookie, nie PHP). Vyžaduje si to, aby ste volania tejto funkcie umiestnili pred značky alebo. Všetky argumenty okrem názvu sú voliteľné. Ak je zadaný iba argument názvu, súbor cookie s týmto názvom sa zo vzdialeného klienta odstráni bezpečné argumenty sú celé čísla /integer a nemožno ich preskočiť pomocou prázdneho riadku. Použite v nich nulu (0). Argument expirácie je normálne unixové celé číslo, ako ho vráti time() alebo mktime() . Po nastavení súborov cookie je možné k nim pristupovať pri načítaní ďalšej stránky prostredníctvom poľa $_COOKIE (ktoré sa vo verziách PHP starších ako 4.1.0 nazýva $HTTP_COOKIE_VARS). Bežné úskalia: Súbory cookie nebudú viditeľné, kým sa nenačíta ďalšia stránka. V PHP 3 je možné vykonať viacero volaní funkcie setcookie() v rovnakom skripte v opačnom poradí. Ak sa pokúšate vymazať jeden súbor cookie pred vložením ďalšieho, musíte ho vložiť pred vymazaním. V PHP 4 sa vykoná viacero volaní setcookie() v poradí, v akom sa volajú. Nasledujú príklady odosielania súborov cookie:
Všimnite si, že hodnotová časť súboru cookie bude pri odoslaní cookie automaticky zakódovaná urlen a po prijatí bude automaticky dekódovaná a priradená k premennej s rovnakým názvom ako názov cookie. Ak chcete zobraziť obsah nášho testovacieho súboru cookie v skripte, jednoducho použite jeden z nasledujúcich príkladov: Ďalšie informácie o súboroch cookie nájdete v špecifikácii Netscape na adrese: http://www.netscape.com/newsref/std/cookie_spec.html. Microsoft Internet Explorer 4 s balíkom Service Pack 1 nepracuje správne so súbormi cookie, ktoré majú nastavený parameter cesty. Netscape Communicator 4.05 a Microsoft Internet Explorer 3.x nespracúvajú súbory cookie správne, ak cesta a čas nie sú nastavené.

Definuje súbor cookie, ktorý sa má odoslať spolu so zvyškom informácií v hlavičke. Cookies musia byť odoslané predtým akékoľvek iné hlavičky (toto je obmedzenie súborov cookie, nie PHP). To si vyžaduje, aby ste volania tejto funkcie umiestnili pred prvým výstupom na stránku, t.j. na značku.

int súbor cookie(názov reťazca [, hodnota reťazca [, platnosť int [, cesta reťazca [, doména reťazca [, int secure]]]]])

Všetky argumenty okrem názov, sú voliteľné. Ak je zadaný iba argument názvu, súbor cookie s týmto názvom sa zo vzdialeného klienta odstráni. Akýkoľvek argument môžete tiež nahradiť prázdnym reťazcom ( "" ), aby ste tento argument preskočili. Argumenty vypršať A zabezpečiť sú to celé čísla a nemožno ich preniesť pomocou prázdneho reťazca. Použite v nich nulu ( 0 ). Argument vypršať toto je normálne unixové časové celé číslo vrátené funkciami čas() alebo mktime(). Argument zabezpečiť určuje, že tento súbor cookie by sa mal prenášať iba cez tajné pripojenie HTTPS.

Po nastavení súborov cookie je možné k nim pristupovať pri načítaní ďalšej stránky prostredníctvom poľa $_COOKIE (ktoré sa vo verziách PHP starších ako 4.1.0 nazýva $HTTP_COOKIE_VARS).

Bežné pasce:

    Súbory cookie nebudú viditeľné, kým sa nenačíta ďalšia stránka.

    Cookies musia byť vymazané pomocou rovnakých parametrov, s ktorými boli nainštalované.

PHP 3 má viacero volaní setcookie() v rovnakom skripte možno vykonať v opačnom poradí. Ak sa pokúšate vymazať jeden súbor cookie pred vložením ďalšieho, musíte ho vložiť pred vymazaním. PHP 4 má viacero volaní setcookie() sa vykonávajú v poradí, v akom sa nazývajú.

Príklad 1. Odosielanie cookies pomocou funkcie setcookie().
setcookie("TestCookie", $value); setcookie("TestCookie", $value,time()+3600); // doba platnosti - 1 hodina setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);

Pri odstraňovaní súborov cookie sa musíte uistiť, že uplynul dátum vypršania platnosti, aby ste prepli mechanizmus vo vašom prehliadači. Nasledujú príklady vymazania súboru cookie vytvoreného v predchádzajúcom príklade:

Príklad 2: Odstránenie cookies pomocou setcookie()
// nastavenie dátumu vypršania platnosti na jednu hodinu setcookie ("TestCookie", "", time() - 3600); setcookie("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);
Príklad 3: Vymazanie všetkých cookies
foreach($_COOKIE as $ind=>$val) @setcookie($ind,"",time()-999, "/", ".".$_SERVER["SERVER_NAME"]);
Príklad 4.

Všimnite si, že hodnotová časť súboru cookie bude pri odoslaní súboru cookie automaticky zakódovaná urlen a po prijatí bude automaticky dekódovaná a priradená k premennej s rovnakým názvom ako názov súboru cookie. Ak chcete zobraziť obsah nášho testovacieho súboru cookie v skripte, jednoducho použite jeden z nasledujúcich príkladov:

Echo $TestCookie; echo $_COOKIE["TestCookie"];

Príklad 5.

Súbory cookie poľa môžete nastaviť aj pomocou zápisu v názve súboru cookie. To má za následok nastavenie takého počtu súborov cookie, koľko je prvkov v tomto poli, ale keď skript načíta súbor cookie, hodnoty sa umiestnia do poľa s názvom cookie:

Setcookie("cookie", "cookietrie"); setcookie("cookie", "cookietwo"); setcookie("cookie", "cookieone"); foreach($_COOKIE ako $name=>$val) ( echo "$name = $value
\n" ;)

Príklad 6.

Ak má váš server dva názvy domén: „www.domain.com“ a „other.domain.com“ a váš účet vám umožňuje obsluhovať stránky z adresára ~/myhome, mali by ste zavolať funkciu setcookie() takto:

Setcookie("meno", $value, time()+3600, "~/myhome", " .domena.com");

Príklad 7: Počítadlo súborov cookie pomocou setcookie()

Viac o cookies



Nastaviť (vymazať) cookies, nastaviť cookies, odoslať cookies. PHP

Súbory cookie sú mechanizmus na ukladanie údajov vo vzdialenom prehliadači a na sledovanie a identifikáciu používateľov, ktorí ho používajú. To znamená, že súbor cookie je akákoľvek informácia uložená v prehliadači používateľa, ktorá je potrebná na interakciu používateľa s konkrétnou stránkou.

Ako nastaviť cookies pomocou PHP?

Hneď si to všimnime nastaviť cookie je to možné buď na určitú dobu, napríklad na 2 hodiny, alebo bez časového obmedzenia, potom sa cookie po zatvorení prehliadača automaticky vymaže.

V php súbor cookie je nastavený pomocou funkcie setcookie().

Cookies

musí byť

odoslaná

pred akýmikoľvek inými hlavičkami (toto je obmedzenie súborov cookie, nie PHP). To si vyžaduje, aby ste volali túto funkciu pred značky alebo

Nastavenie cookies

pred zatvorením prehliadača napíšte na stránku nasledovné
setcookie("_ws_","test",0,"/");
// "/" - ak je skript v inom priečinku
// cookie bude stále zapísané takto www.sdws.ru
?>

Ako nastaviť cookie na čas, na deň, na pár minút, na hodiny?

V php je algoritmus veľmi jednoduchý
// nastavte súbor cookie
setcookie("_ws_","test",time()+3600,"/");
?> čas()+3600- nastaví súbor cookie na jednu hodinu (3600 sekúnd).
Napríklad potrebujeme poslať cookie na 23 dní
// nastavte súbor cookie
setcookie("_ws_","test",time()+1987200,"/");
?>

Odstraňovanie súborov cookie. Ako vymazať cookies?

Odstraňovanie súborov cookie sa vyskytuje pomocou rovnakej funkcie setcookie(). Nastavíme rovnaké parametre, len so znamienkom mínus
setcookie("_ws_","test",time()-3600,"/");
?> Podobná téma:

Nikto nevie s istotou, odkiaľ pochádza výraz „cookie“, hoci sa verí, že v čase zrodu unixových systémov sa niekde používalo slovné spojenie Magic Cookies. To znamenalo „potvrdenia“ (token, lístok), ktoré sa vymieňali medzi programami.

Súbor cookie je riešením jedného zo starších problémov protokolu HTTP (HyperText Transfer Protocol). Tento problém spočíva v nekonzistencii spojenia medzi klientom a serverom, ako pri FTP alebo Telnet relácii, t.j. Pre každý dokument (alebo súbor) pri prenose cez protokol HTTP sa odošle samostatná požiadavka. Čiastočné riešenie tohto problému poskytlo zahrnutie súborov cookie do protokolu HTTP. Inými slovami, transakcia je dokončená potom, čo prehliadač zadá požiadavku a server vydá príslušnú odpoveď. Ihneď potom server „zabudne“ na používateľa a každú ďalšiu požiadavku od toho istého používateľa považuje za nového používateľa.

Pomocou súborov cookie môžete emulovať reláciu prostredníctvom protokolu HTTP. Stručne povedané, princíp emulácie relácie je nasledovný: pri prvej požiadavke sa vydá zodpovedajúca hodnota cookie a pri každej ďalšej požiadavke sa táto hodnota načíta z premennej prostredia HTTP_COOKIE a podľa toho sa spracuje.

Jednoduchý príklad: existuje formulár, v ktorom je používateľ vyzvaný, aby uviedol svoje meno, z neho sa volá skript, ktorý zapíše hodnotu súboru cookie do prehliadača používateľa. Pri každej ďalšej návšteve sa na základe analýzy hodnoty súboru cookie z prehliadača používateľa na stránke zobrazí buď personalizovaný pozdrav (ak je nastavená hodnota súboru cookie), alebo úvodný formulár so žiadosťou o zadanie používateľského mena (ak hodnota súboru cookie nie je súbor).

Začnime teda cvičiť:

1. Nastavenie cookies pomocou PHP

Na nastavenie tejto funkcie v jazyku PHP existuje operátor:
setcookie(). Najlepšie na tom je, že funkcia setcookie() zaberá až šesť argumentov v závislosti od toho, ako chcete spravovať hodnoty cookie a kto bude hodnoty cookie čítať.

Najjednoduchší spôsob nastavenia cookies je:

Setcookie("meno", "bret");

Potom pre každú nasledujúcu stránku na vašom webe zobrazenú počas tejto relácie (kým používateľ neopustí web) bude mať premenná $name hodnotu „bret“ a dá sa ľahko prečítať pomocou PHP. Tento typ súboru cookie je známy ako súbor cookie relácie, pretože hodnota pretrváva počas trvania relácie používateľa.

Ak chcete, aby si prehliadač pamätal hodnotu súboru cookie potom, čo používateľ ukončí reláciu, musíte funkcii setcookie() odovzdať tretí parameter – dátum vypršania platnosti súboru cookie. Keďže PHP bolo vyvinuté primárne v prostredí Unixu, čas expirácie cookie by ste si mali predstaviť ako počet sekúnd, ktoré uplynuli od 1. januára 1970. Ak máte skúsenosti s programovaním v Unixe, možno sa vám to nezdá prekvapujúce. Ale ak ste programovali iba v prostredí Windows alebo Macintosh, možno by ste sa čudovali, akí blázni sú títo unixoví.

Ale neboj sa. PHP má veľmi šikovnú funkciu mktime(). Zadáte mu ako parametre (v tomto poradí) hodinu, minútu, sekundu, mesiac, deň a rok, ktoré definujú bod v čase, ktorý chcete reprezentovať vo formáte čitateľnom pre UNIX, a mktime() vám vráti počet sekúnd, ktoré prešiel od 1. januára 1970 do určeného časového obdobia. Napríklad, ak chcete, aby platnosť súboru cookie vypršala 1. januára 2000, napíšte:

Ak chcete zmeniť hodnotu cookie na novú, môžete jednoducho prepísať jej (jej?) hodnotu. Takže aj keď prehliadač už odoslal hodnotu cookie na server na jednej z predchádzajúcich stránok, je celkom možné povedať serveru, že vaše meno je v skutočnosti „jeff“.

Všimnite si, že to nemení hodnotu premennej $name. Inštaluje sa pri načítaní stránky. Ak chcete, aby sa hodnota premennej menila synchronizovane s hodnotou súboru cookie, mali by ste zmeniť kód takto:

Nasledujúce dva parametre funkcie setcookie() vám umožňujú určiť cestu a názov domény toho, kto môže čítať hodnotu vášho súboru cookie. V predvolenom nastavení môžu iba stránky umiestnené v rovnakom adresári alebo nižšie v štruktúre podadresárov servera, ktorý nastavil súbor cookie, čítať jeho (jej??) hodnotu. Deje sa tak z bezpečnostných dôvodov. Ak má však váš server dva názvy domén: „www.domain.com“ a „other.domain.com“ a váš účet vám umožňuje obsluhovať stránky z adresára ~/myhome, funkciu setcookie() by ste nazvali ako nasleduje:

Posledný parameter setcookie(), ktorý sme nikdy nepoužili, vyžaduje, aby sa hodnota cookie odosielala iba na webové servery, ktoré používajú protokol zabezpečeného pripojenia, ako je SSL. Ak to potrebujete, nastavte šiesty parameter na 1.

Odstránenie súborov cookie je tiež veľmi jednoduché, stačí zadať názov súboru cookie funkcii setcookie() a PHP sa postará o zvyšok:

Na záver je tu ešte jedna poznámka týkajúca sa používania cookies. Vzhľadom na spôsob spracovania súborov cookie v protokole HTTP musia byť hodnoty všetkých súborov cookie nastavené pred výstupom akéhokoľvek textu. Ak urobíte opak, PHP vám dá varovanie a hodnota cookie sa neodošle. Toto je správne:

A tak - nie:

2. Nastavenie cookies pomocou JavaScriptu

Hodnotu súboru cookie môžete nastaviť pomocou JavaScriptu. Jedinou nevýhodou tejto metódy je, že nie všetky prehliadače ju podporujú. Nižšie sú uvedené príklady funkcií JavaScriptu, ktoré napísal Alexey Alexandrov pre skript organizátora.

Príklad. Funkcia nastavenia hodnoty cookies

// názov - názov súboru cookie // hodnota - hodnota súboru cookie // - dátum vypršania platnosti
cookie (štandardne - do konca relácie) // - cesta, pre ktorú je cookie platný
(štandardne - dokument, v ktorom bola nastavená hodnota) // - doména, pre ktorú je cookie platný
(predvolená je doména, v ktorej bola hodnota nastavená) // - boolovská hodnota označujúca, či sa vyžaduje
bezpečný prenos hodnoty cookie funkcie setCookie(názov, hodnota, expiruje, cesta, doména, secure) ( var curCookie = meno + "=" + escape(hodnota) + ((vyprší) ? "; expires=" + expires.toGMTString( ): "") + ((cesta) ? "; cesta=" + cesta: "") + ((doména) ? "; doména=" + doména: "") + ((zabezpečené) ? "; zabezpečené" : " ") if (!pozor || (meno + "=" + escape(hodnota)).dĺžka<= 4000) document.cookie = curCookie else if (confirm("Cookie превышает 4KB и будет вырезан!")) document.cookie = curCookie }

Príklad. Funkcia na čítanie hodnoty súboru cookie

Ak súbor cookie neexistuje, vráti nastavenú hodnotu alebo prázdny reťazec.

// názov - názov čítaného súboru cookie funkcia getCookie(názov) ( var prefix = názov + "=" var cookieStartIndex = document.cookie.indexOf(prefix) if (cookieStartIndex == -1) return null var cookieEndIndex = document. cookie.indexOf
(";", cookieStartIndex + prefix.length) if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length return unescape(document.cookie.substring
(cookieStartIndex + prefix.length, cookieEndIndex))

Príklad. Funkcia na odstránenie hodnoty súboru cookie

Táto funkcia funguje tak, že súbor cookie je nastavený so zámerne zastaraným parametrom expirácie, v tomto prípade 1. januára 1970.

// názov - názov súboru cookie // - cesta, pre ktorú je súbor cookie platný // - doména, pre ktorú je súbor cookie platný funkcia deleteCookie(názov, cesta, doména) ( if (getCookie(názov)) ( dokument .cookie = názov + "= " + ((cesta) ? "; cesta=" + cesta: "") + ((doména) ? "; doména=" + doména: "") + "; expiruje=štv, 01 -január-70 00:00 :01 GMT")

3. Nastavenie cookies pomocou Perlu

Najvýkonnejším a najflexibilnejším spôsobom správy dokumentov pomocou mechanizmu súborov cookie sú skripty CGI. Nastavenie hodnoty cookie v Perle by vyzeralo takto:

Tlač "Typ obsahu: text/htmln"; vytlačiť "Nastaviť súbor cookie: používateľské meno=aaa13; expiruje=piatok,
31. decembra 99 23:59:59 GMT; cesta=/; doména=www.citforum.ru;nn";

Skript pri zobrazení výsledkov svojej práce generuje hlavičku HTTP:

Content-type: text/html Set-Cookie: "username=aaa13; expires=Piday,
31. decembra 99 23:59:59 GMT; cesta=/; doména=www.webscript.ru;"

A teraz o smutnom...

Obmedzenia

Klient (prehliadač) má nasledujúce obmedzenia pre súbory cookie:

  • Celkovo je možné uložiť až 300 hodnôt cookie
  • každý súbor cookie nemôže presiahnuť 4 kB
  • Na server alebo doménu je možné uložiť až 20 hodnôt súborov cookie

Ak sa prekročí limit 300 alebo 20, prvý záznam v čase sa vymaže. Pri prekročení limitu hlasitosti 4 KB trpí správnosť hodnoty súboru cookie - odreže sa časť záznamu (od začiatku tohto záznamu), ktorá sa rovná nadbytočnému objemu.

V prípade ukladania dokumentov do vyrovnávacej pamäte, napríklad prostredníctvom proxy servera, sa pole hlavičky HTTP Set-cookie nikdy neukladá do vyrovnávacej pamäte.

Fórum portálu PHP. S.U.