Cookie-uri de sesiune
Incalziti-va cuptoarele, oameni buni, caci a sosit vremea sa bagam JavaScript la copt pana cand creste in el memoria de lunga durata. In acest tutorial, vom cauta reteta pentru cookie-uri („prajiturele”) cu durata de o sesiune, si modul in care iti pot ajuta scripturile sa retina informatie chiar si dupa ce pagina este reincarcata sau stearsa.
Privire de ansamblu
Cookie-urile JavaScript reprezinta vehiculul care face posibila pastrarea datelor de la o solicitare client la alta. Cand un site care impune logarea isi aminteste numele tau de utilizator cu ocazia re-vizitarilor, de exemplu, nu multumi popularelor prajiturele Oreos, ci acestor impostori necomestibili.
Exista doua tipuri de cookie-uri JavaSript - permanente, si de sesiune. Primul tip isi stocheaza informatia intr-un fisier fizic in computerul clientului, numit "cookie.txt", cu datele stocate disponibile „permenent”. Cookie-urile de sesiune, de cealalta parte, stocheaza informatiile in memoria broweserului, si este disponibil pe durata sesiunii browserului. Cu alte cuvinte, datele stocate la interiorul unui cookie de sesiune este disponibil din momentul stocarii, pana cand browserul este inchis. Deplasarea de pe o pagina pe alta, in decursul acestui interval nu va duce la stergerea datelor.
Acest tutorial, dupa cum am mentionat, se canalizeaza pe cookie-urile de sesiune. Goleste-ti stomacul ca sa dam iama in ele!
Configurarea si extragerea unui cookie
O singura proprietate are insarcinarea de a realiza cookie-uri de sesiune in JavaScript:
document.cookie |
|
Citeste/scrie proprietatea care stocheaza si prezerva datele in format delimitat prin semnul de punct-si-virgula (;) |
function alertcook(){
document.cookie="JavaScript Kit"
alert(document.cookie)
}
Ia document.cookie ca pe variabila familiara, insa care prezinta o personalitate sucita, incapatanata: Mai jos, ii stocam la interior un sir - observa ce iese:
document.cookie="JavaScript Kit"
alert(document.cookie)
Daca vezi 1 din urmatoarele 3 situatii, este cazul sa te alarmezi- 1) "JavaScript Kit", 2) Un sir continand valori multiple, dintre care una este "JavaScript Kit", sau 3) Un sir gol. Ia aminte ca daca nu vezi nimic, (sir gol), browserul tau nu are cookie-urile activate (sugestie: schimba asta!).
document.cookie reprezinta o "utilitate publica", folosirea sa fiind comuna tuturor scripturilor de pe toate site-urile care o acceseaza. Datorita acestui lucru, proprietatea contine adesea mai multe valori decat ai stocat tu in ea, celelalte valori provenind din valorile care vin de pe alte site-uri. Cand ne situam in acest caz, fiecare valoare este separata printr-un semn se punct-si-virgula. Toate aceste valori sunt pastrate pana cand browserul este inchis.
Extragerea datelor din cookie
Ok, deci toata lumea poate sa ia o muscatura din document.cookie; cum poti sa iti localizezi bucata ta si sa o inhati? Aici rezida „grosul” muncii tale atunci cand lucrezi cu cookie-urile de sesiune- anume, in recuperarea a ceea ce s-a pus in ele.
Urmatorii doi pasi sunt implicati in majoritatea tehnicilor folosite pentru a extrage datele dintr-un cookie de sesiune:
1) Stocheaza-ti datele folosind un format pereche nume/valoare
2) Foloseste metode cu siruri, cum ar fi string.indexOf() si string.split() pentru a detecta/recupera aceste date
De exemplu:
document.cookie="sitename=JavaScript Kit"
var beginindex, endindex, result
beginindex=document.cookie.indexOf("sitename")+9
endindex=beginindex
while (document.cookie.charAt(endindex)!=";"&&
endindex<=document.cookie.length)
endindex++
var result=document.cookie.substring(beginindex,endindex)
Ce nebunie...un motiv in plus ca sa citesti mai departe...
Fa-ti rost de o rutina cookie
Daca vine un timp cand este cazul sa iti calci orgoliul si sa folosesti biblioteci JavaScript gata alcatuite, acest lucru se intampla cand lucrezi cu cookie-uri. Te poti informa pe acest subiect in majoritatea cartilor de JavaScript, si vei gasi aceeasi recomandare.
Cu privire la subiectul in cauza - recuperarea datelor dintr-un cookie - o excelenta rutina pre-construita este urmatoarea:
Shelley Power te ajuta sa obtii o rutina cookie:
function get_cookie(Name) {
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}
Avand la dispozitie aceasta rutina, pentru a-ti extrage datele din document.cookie, pur si simplu introdu numele ansamblului de date ca parametru:
var result=get_cookie("sitename")
In cazul in care valoarea corespunzatoare nu exista, rutina va returna un sir gol.
p.s: Vezi aici pentru o biblioteca JavaScript de cookie-uri completa.
Acum, stim atat cum sa stocam cat si cum sa recuperam date dintrun cookie de sesiune. Dar la ce ne foloseste asta?
Exemplu
Cookie-urile de sesiune dau adesea cel mai bun randament „in culise”, ca parte a unei ecuatii mai mari. Interogarile dintre pagini sau ferestrele popup unice sunt un exemplu clasic al acestei situatii.
Sursa:
<script type="text/javascript">
function get_cookie(Name) {
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}
function setcolor(what){
document.body.style.backgroundColor=what
document.cookie="bgcolor="+what
}
if (get_cookie("bgcolor")!="")
document.body.style.backgroundColor=get_cookie("bgcolor")
</script>
<form name="a1">
<select name="a2" size="1">
<option selected value="white">Select background color </option>
<option value="#F0F0F0">Light gray</option>
<option value="#80FFFF">Sky blue</option>
<option value="#C6C6FF">Purple</option>
<option value="white">White</option>
</select>
<input type="button" value="Go" onClick="setcolor(document.a1.a2.options
[document.a1.a2.selectedIndex].value)">
</form>
Incearca sa incarci din nou sau sa pleci din pagina, iar apoi sa revii; culoarea selectata pentru fundal persista. Pentru a extinde aceasta persistenta la toate paginile de pe site-ul tau, ar trebui sa incluzi pur si simplu rutina get_cookie si cele doua randuri de cod care configureaza fundalul documentului pe aceste pagini.
Si acest tutorial este inclus in nota de plata. Serviti cu placere cookie-urile JavaScript, insa, ca pentru orice altceva in viata, se recomanda moderatie!
|