Prăjituri

Mie îmi plac prăjiturile!

Péter Csaba

Citind titlul articolului, puteți crede că s-a comis o eroare, și din greșeală o rețetă din cartea de bucate s-a introdus aici. Ei, nu trebuie să vă faceți griji, deoarece va fi vorba despre cunoscutele cookies (prăjituri), inventate de Netscape.

Promovarea paginilor pe Web devine din ce în ce mai complicată. Pentru prima dată, când am construit un site in 1995, se știa aproximativ ce componente trebuie să aibă o pagina Web. De atunci, lucrurile s-au schimbat considerabil. Am fost martorii diferitelor versiuni ale navigatoarelor Netscape și Microsoft Explorer, fiecare oferind noi facilități, multe dintre ele fiind experimentale. Ca și creator de pagini Web, nu reprezintă nici o problemă să folosesc facilitățile oferite de navigatoare, în cazul în care știu precis cine se va uita la aceste pagini și ce navigator va folosi. Acesta se poate întâmpla în cazul unui intranet, dar dacă construim pagini publice, nu putem știi cine, ce navigator va folosi ca să se uite la paginile noastre.

Filosofia mea personală în designul paginilor Web este ca acestea să apară aproximativ la fel pentru toate navigatoarele, fie ele Netscape, Internet Explorer sau Opera. Din această cauză, încerc să folosesc un subset de tag-uri care funcționează în diferite navigatoare (desigur mă refer la cele grafice). Unele persoane folosesc navigatoare de tip text ca lynx sub UNIX, și desigur doresc ca și acele persoane să găsească toate informațiile pe care le oferă pagina respectivă.

Paginile mele le testez pe diferite platforme și diferite navigatoare la care am acces. Actual sunt nenumărate mici diferențe între navigatoare, privind felul în care prelucrează și afișează imaginile. Dacă ne preocupă aspectul paginii, este foarte greu să construim pagini care să arată exact la fel pe diferite platforme și în diferite navigatoare. Unele navigatoare vor adăuga un pixel în plus într-o parte a imaginii, iar altele vor adăuga într-o altă parte. În unele navigatoare, mărimea fontului va apare corect, în altele pot să apară mai mici sau mai mari.

Încerc să nu folosesc unele noutăți introduse în limbajul HTML, noutăți care ar cauza ca cineva să nu vadă deloc pagina (ex. frame-urile nu sunt suportate de versiunile vechi ale unor navigatoare).

Memorarea stărilor

În ultima vreme, am observat că fac din ce în ce mai multe pagini interactive: pagini care primesc niște date de la utilizator, accesează o bază de date și generează o nouă pagină.

Când introduceți un URL și spuneți navigatorului să aducă pagina respectivă, este lucrul pe care-l va face, nici mai mult, nici mai puțin. Va comunica cu serverul respectiv și va spune „dă-mi pagina care are URL-ul specificat”. Serverul trimite pagina la navigator, care la rândul lui poate să ceară noi elemente, poate imagini. Ca să obțină datele, pentru fiecare element în parte, navigatorul va stabili legătura cu serverul, până când pagina este recreată pe ecran.

Ceea ce vreau să spun este că toate informațiile care specifică o cerere pentru o pagină, o imagine, sau rezultatul unui program, sunt conținute într-un singur mesaj trimis serverului. Serverul satisface cererea bazată pe un URL, trimite înapoi informațiile și își vede de treabă, adică așteaptă noi cereri.

Formularele folosesc exact acest mecanism de tranzacție a datelor. Utilizatorul completează câmpuri text, selectează căsuțe de selecție sau butoane radio, selectează elemente din liste, iar aceste informații trebuie să-și găsească drumul către serverul pe care un program va prelucra datele. Când butonul SEND este apăsat, din aceste informații se va crea o listă de nume = valoare separate de caracterul „&” care va fi adăugat după URL-ul trimis serverului. Serverul, la rândul lui, va pune la dispoziția programului acest șir (string).

Acest lucru poate fi observat în cazul în care încercăm să găsim ceva folosind căutătorul Yahoo. Am introdus textul „Lăstun” în căutător, am apăsat butonul Search, și navigatorul a trimis la serverul Yahoo următorul URL:

http://search.yahoo.com/bin/seacrh?p=Lastun

Sistemul Yahoo rulează programul search și generează o pagină cu referiri la „Lăstun”. Informațiile după semnul de întrebare au fost folosite ca date de intrare a programului search și acesta a preluat acest string, a căutat în baza de date și a generat o pagină pentru navigator.

Deoarece serverul generează pagina, poate să stocheze informații în această pagină și care să se refere la informațiile originale primite de la utilizator. Serverul nu memorează nici o informație despre cererile făcute, însă aceste informații sunt puse în pagina care este retrimisă la noi. În acest fel, pot să funcționeze butoanele „Next 20 maches”.

Când serverul creează pagina, stochează în pagină informații despre căutarea făcută. Astfel legătura „Next 20 maches” va arăta:

http://search.zahoo.com-search?p=Lastun&h=s&b=19&hc=28&hs=103

După cum se poate vedea, au apărut noi parametrii care vor înștiința programul search să genereze a doua pagină.

URL-ul se poate folosi pentru a păstra situația în care se află tranzacția. Serverul nu trebuie să păstreze nici o informație despre utilizator și despre ce a căutat, deși câteodată ar fi avantajos. Căutătorul Altavista generează mai multe pagini când primește o simplă cerere, așteptându-se că vom naviga și pe următoarele pagini, în cazul în care ceea ce căutăm nu se află pe prima pagină. Altavista va recrea paginile, dacă plecăm și revenim mult mai târziu.

La cumpărături.

Stocarea informațiilor într-un URL funcționează bine. Există o ordine logică a paginilor, fiecare pagină oferă niște informații la pagina următoare.

Să luăm de exemplu un magazin virtual. Poate să existe o simplă pagină în care clientul selectează toate produsele de care este interesat și trimite comanda. Mult mai frumos și mai eficient ar fi dacă ar putea naviga pe diferite pagini în care sunt prezentate produsele, și dacă este interesat de vreun produs, apăsând pe un buton „Buy me”, acest produs va fi așezat în coșul de cumpărături.

Problema este cum ținem evidența coșului de cumpărături. După cum am văzut, trebuie să stocăm informațiile în navigatorul clientului. În cazul în care aceste pagini sunt generate de un program, acest lucru se poate realiza transmițând informațiile din pagină în pagină, în timp ce clientul navighează pe site.

Mecanismul Cookie

Ce se întâmplă dacă utilizatorul apasă pe butonul „Back” al navigatorului. Va pierde informații. Dar dacă intervine ceva și utilizatorul ar dori să se întoarcă mâine să-și termine cumpărăturile? O dată oprit, navigatorul pierde toate informațiile aflate în pagină.

Din această cauză, am avea nevoie de o posibilitate de a stoca informații undeva. Cu ceva timp în urmă, Netscape a prevăzut această necesitate și a inventat noțiunea de Cookie. Acum, toate navigatoarele mai importante au suport pentru cookies, deși pe pagina Netscape-ului mai apare textul „Preliminary Specification - Use with Caution” (Specificații preliminare - Folosiți cu atenție).

Mecanismul cookie permite serverului să stocheze informații de tip nume=valoare în fișierele navigatorului. Informația este asociată cu un URL particular, și este returnată automat serverului, când URL-ul este accesat. Mai multe perechi nume = valoare pot fi asociate cu un URL, și toate aceste valori vor fi trimise când URL-ul este accesat.

„Cookie” poate fi setat cu o dată de expirare care definește durata de viață a acestuia. Dacă serverul nu setează o astfel de dată, atunci informațiile nu vor fi salvate pe disc, și vor exista doar în navigator și vor muri când navigatorul este oprit.

Ca să seteze un cookie, serverul trimite o comandă ca parte a „header”-ului din pagina HTML. Comanda conține perechea nume=valoare, data de expirare, numele domeniului care va fi folosit ulterior pentru comparație, o cale de pe domeniul respectiv, și o informație despre nivelul de securitate. Dacă aceasta din urmă este setată ca activ, atunci cookie este trimis doar la servere cu securitate mărită.

Observați că serverul poate să seteze un nume de domeniu și o cale, care să permită ca aceasta să fie înapoiată la accesarea mai multor URL-uri, nu doar la aceea care la creat. Când navigatorul se gândește să trimită înapoi un cookie, mai întâi face o comparație cu partea de nume de domeniu din URL, cu domeniile stocate în fișierele lui. Aici se folosește o comparație parțială, dacă domeniul în URL este www.netsoft.ro și există un cookie memorat cu cowboz.netsoft.ro, atunci comparația va fi reușită.

Dacă vă uitați în fișierele dumneavoastră de cookie, veți vedea multe referințe ca .numesite.domeniu. Punctul din față este necesar, deoarece se pot seta domenii care conțin cel puțin două puncte, evitând astfel setarea unor cookie-uri asociate cu domenii ca .org, .com sau .ro.

După ce comparația domeniului a fost făcută cu succes, urmează comparația căii specificate în URL cu cel stocat în navigator. Comparația este făcută de la stânga la dreapta, deci o valoare stocată -foo comparată cu -foobar va fi cu succes, de asemenea și -foo-bar va fi o cale bună, la care se va trimite cookie-ul. Veți vedea că la multe companii, calea este setată la „/”, deci informațiile vor fi trimise la toate paginile aflate pe situl respectiv.

Comparația se face identic și în cazul în care un cookie este setat, domeniul serverului trebuie să fie același cu domeniul pe care–l setăm în cookie. Din această cauză, nu pot să spun serverului meu să seteze un cookie în navigatorul dumneavoastră cu un domeniu care aparține la altcineva.

Adineauri am spus să vă uitați la fișierele de pe sistemul dumneavoastră care conțin cookies. În versiunea UNIX de Netscape, cookies-urile permanente sunt stocate în fișierul cookies.txt în directorul .netscape aflată în home director. Pe sistemul Windows, navigatorul Netscape stochează informațiile tot într-un fișier numit cookies.txt, folosiți FIND că să-l găsiți.

Veți vedea că aceste fișiere sunt fișiere text, fiecare cookie are informațiile stocate pe o linie. Aceste fișiere sunt rescrise pe disc doar în momentul în care oprim programul Netscape, deci dacă vrem să vedem ce se întâmplă, va trebui să oprim și să repornim navigatorul.

Pentru Internet Explorer, cookies-urile sunt stocate în fișiere separate în directorul Windows\Cookies, sunt denumite utilizator@domeniu și conțin date binare.

Unde se pot folosi?

Dacă am dori să vizităm castelul „Peleș”, ar fi benefic dacă am memora unde am fost deja, ce camere am văzut deja. Deci utilizatorii pot pleca și pot să se reîntoarcă mai târziu continuând vizita din locul în care au ajuns. Pe fiecare pagină, am putea pune un buton care setează un cookie cu URL-ul paginii curente, iar pe prima pagină am putea pune un alt buton care sare la URL-ul stocat în cookie. Perioada de expirare poate să fie de două săptămâni.

O altă problemă, despre care deja am vorbit, este magazinul virtual. Acest mecanism se poate folosi foarte bine și în cazul în care avem pagini fixe despre diferite produse.

Anumite situri folosesc cookie ca să stocheze informații, personalizate, cu ajutorul cărora pot să afișeze pagini după preferințele noastre. De exemplu, dacă vizitez un site foarte des, dar aș prefera ca fundalul să fie alb în loc de roșu, aș putea selecta dintr-o listă culoarea mea preferată și s-ar crea un cookie în navigatorul meu cu aceste informații. La o nouă accesare a sitului respectiv, programul care generează pagina ar primi informațiile despre preferința mea, și fundalul ar apărea alb.

Unele situri stochează detalii de autentificare, ca nume utilizator și parolă, deci când vrem să intrăm pe un site protejat cu parolă, aceasta ne poate identifica fără să ne mai ceară informații suplimentare. Toate acestea sună bine, însă de multe ori parola este scrisă ca simplu text în fișierul cookies.txt, deci aveți grijă.

Există câteva aplicații poate mai puțin binevoitoare. Unele companii oferă servicii de publicitate pe siturile lor. Până aici toate bune și frumoase, însă nu vi s-a părut puțin ciudat că, de exemplu, dacă sunteți interesați de calculatoare vor apărea reclame de calculatoare, dacă vă interesează mașinile vor apărea diferite reclame legate de mașini. Cum este posibil acest lucru? Simplu, se folosesc cookies. Dacă ați navigat pe Internet, și ați dat de o reclamă care afișează niște mesaje, și de obicei vă invită să vizitați pagina respectivă, puteți să vă așteptați că probabil ați fost înregistrați în baza lor de date. Puteți vedea aceste situri în fișierul cookies.txt. Veți găsi câteva cookie-uri de situri despre care sunteți convinși că nici nu ați auzit.

Toată treaba funcționează în felul următor. Vizitați un site care vă prezintă unele din spoturile publicitare, să zicem Altavista care folosește serviciile de la DoubleClick Inc. Ca parte a paginii Altavista, veți vedea și o reclamă. Această reclamă nu vine de pe serverul Altavista. Această imagine va veni de pe serverul care aparține firmei DoubleClick. Imaginea va fi trimisă folosind un script care va seta un cookie în navigator. Deoarece navigatorul vorbește direct cu domeniul doubleclick.net ca să obțină imaginea, care de fapt este reclama, un cookie poate fi setat de un calculator aflată în acel domeniu.

Acum, când vizitați un alt site care întâmplător are legătură cu firma DoubleClick, veți vedea o altă reclamă. Și DoubleClick va vedea cookie-ul pe care l-a setat adineauri, și va folosi acel număr unic ca să vă găsească în baza lui de date. Programul de la DoubleClick poate să se asigure că trimite o altă reclamă, decât pe cea prezentată anterior. Totodată, are cunoștințe despre cele ce ați căutat pe Web, știe unde ați fost și după ce ați căutat folosind un căutător ca Altavista. Folosind aceste informații, ar fi posibil ca DoubleClick să ne afișeze doar anumite reclame. Nu este sigur dacă așa și face.

Nu vreau Cookies!

Dacă nu doriți să stocați cookies pe calculatorul dumneavoastră, atunci toate navigatoarele au o opțiune care vă alertează când cineva vrea să seteze un cookie. Va apare o fereastră de dialog, unde veți avea posibilitatea să permiteți acest lucru, sau să nu permiteți. În versiunea 4 a navigatorului Netscape Navigator, există o opțiune care activată nu permite setarea cookie-urilor provenite de pe alt site decât cel vizitat (vezi cazul DoubleClick).

Dacă folosiți Windows 95 sau NT pentru accesarea Internetului, firma Luckman Interactive Inc. a creat un program freeware care permite sa vă ascundeți cookie-urile existente.

În final, întotdeauna puteți să editați fișierul cookies.txt ca să vă scoateți câteva dintre intrări.

Referințe folositoare
Pagina originală pentru cookie de la Netscape este http://home.netscape.com /newsref/std-cookie?spec.html. Există un alt site cu foarte multe informații folositoare, numit Cookie Central, și are adresa http://www.cookiecentral.com. De asemenea, Yahoo are o pagină bună pentru Cookies, uitați-vă la „Persistent Cookies”. Situl DoubleClick poate fi vizitată la adresa http://www.doubleclick.net.

 


BYTE România - februarie 1998


(C) Copyright Computer Press Agora