 |
|
 |
|
|
|
|
Subiectul anterior
:: Subiectul urmator |
|
Autor |
Mesaj |
|
Elektro_Love
Administrator


Data inscrierii: 21/Iul/2010
Mesaje: 101
|
Trimis:
21/07/2010 23:52 Titlul subiectului:
Cookie-uri II |
|
|
1. Fisiere cookie cu acelasi nume
Daca un browser are mai multe fisiere cookie pentru un site si au acelasi nume, definite fiecare cu alta cale in parametrul "path", si cu valori diferite, de exemplu daca avem trei fisiere cookie cu numele "color", sirul cookie ar arata astfel:
color=blue; color=green; color=white
In cazul acesta, pentru a numara valorile asociate unui nume cookie puteti folosi urmatoarea functie:
| Citat: | function GetCookieCount (name) {
var result = 0;
var myCookie = " " + document.cookie + ";";
var searchName = " " + name + "=";
var nameLength = searchName.length;
var startOfCookie = myCookie.indexOf(searchName);
while (startOfCookie != -1) {
result += 1;
startOfCookie = myCookie.indexOf(searchName, startOfCookie + nameLength);
}
return result;
} |
Impreuna cu aceasta functie care numara cate valori asociate exista, trebuie sa aveti si o functie care sa regaseasca o anumita instanta a unui cookie, cum este urmatoarea:
| Citat: | function GetCookieNum (name, cookieNum) {
var result = null;
if (cookieNum >= 1) {
var myCookie = " " + document.cookie + ";";
var searchName = " " + name + "=";
var nameLength = searchName.length;
var startOfCookie = myCookie.indexOf(searchName);
var cntr = 0;
for (cntr = 1; cntr < cookieNum; cntr++) {
startOfCookie = myCookie.indexOf(searchName, startOfCookie + nameLength);
}
if (startOfCookie != -1) {
startOfCookie += nameLength; // omite nume cookie anterior
var endOfCookie = myCookie.indexOf(";", startOfCookie);
result = unescape(myCookie.substring(startOfCookie, endOfCookie));
}
}
return result;
} |
2. Stergerea unui cookie
Pentru a sterge un cookie, numele si calea (daca a fost specificat parametrul "path") trebuie sa fie aceleasi cu numele si calea utilizate la stabilirea fisierului cookie.
Stergerea unui cookie se face prin stabilirea datei de expirare la un moment in trecut, ca in exemplul urmator:
| Citat: | function ClearCookie (name) {
var ThreeDays = 3*24*60*60*1000;
var expDate = new Date();
expDate.setTime (expDate.getTime() - ThreeDays);
document.cookie = name + "=ImOutOfHere; expires=" + expDate.toGMTString();
} |
3. Exemplu complet utilizare cookie
Pentru a intelege mai bine cum puteti crea si folosi fisierele cookie, studiati exemplul urmator.
Exemplul este ceva mai complex, cuprinde un script cu mai numeroase functii care contin multe din elementele invatate in lectiile anterioare cat si altele mai avansate, pentru lucrul cu siruri.
Scopul acestui exemplu este de a intelege cum functioneaza fisierele cookie, acesta contine in sectiunea HEAD a unui document HTML un script JavaScript in care sunt definite 4 functii pentru lucrul cu fisiere cookie, iar in corpul paginii, BODY, este construit un tabel HTML cu 2 coloane, in întâia este un formular pentru scrierea unor preferinte care vor fi trimise la script pentru inregistrarea acestora in cookie, iar a doua coloana contine un buton care activeaza afisarea preferintelor din cookie si un alt buton care sterge cookie-urile.
Codul complet este urmatorul:
| Citat: | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title>Exemplu întrebuințare cookie</title>
<script type="text/javascript">
<!--
// Functia pt. setarea cookie-urilor
function SetCookie () {
// Se definesc variabilele care preiau valorile campurilor din formular
var culoare = document.preferinte.culoare.value;
var fructe = document.preferinte.fructe.value;
var citat = document.preferinte.citat.value;
// Seteaza timpul de expirare, 2 zile
var twoDays = 2*24*60*60*1000
var expDate = new Date()
expDate.setTime(expDate.getTime()+twoDays);
// Creaza cookie-urile
document.cookie = "cookie1" + "=" + escape(culoare) + "; expires=" + expDate.toGMTString() ;
document.cookie = "cookie2" + "=" + escape(fructe) + "; expires=" + expDate.toGMTString() ;
document.cookie = "cookie3" + "=" + escape(citat) + "; expires=" + expDate.toGMTString() ;
}
// Functia care verifica daca exista cookie-ul cu un anumit nume transmis ca argument
// Daca exista, prelucreaza sirul pt. extragerea valorii acestuia
// Returneaza valoarea asociata numelui
function checkCookie(c_name) {
if (document.cookie.length>0) {
c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1) {
c_start=c_start + c_name.length+1;
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) {
c_end=document.cookie.length;
}
return unescape(document.cookie.substring(c_start,c_end));
}
}
// Daca cookie-ul verificat nu exista
return "Nu ati adaugat inca o preferinta";
}
// Functia trimite valorile primite la apelare spre verificare la functia precedenta
// Daca numele cookie-ului exista, stocheaza valoarea intr-o matrice
// Afiseaza in pagina valorile cookie-urilor
function getCookie() {
nr = getCookie.arguments.length
var val_c = new Array(nr)
var a = 0
for (var i=0; i<nr; i++) {
valoare=checkCookie(getCookie.arguments[i]);
if (valoare!=null && valoare!="") {
val_c[a] = valoare;
a++
}
}
// Afiseaza in pagina, la id-urile indicate, valorile cookie-urilor
document.getElementById("idculoare").childNodes[0].nodeValue = val_c[0];
document.getElementById("idfructe").childNodes[0].nodeValue = val_c[1];
document.getElementById("idcitat").childNodes[0].nodeValue = val_c[2];
}
// Functia pt. stergerea cookie-urilor
function stergeCookie() {
nr_c = stergeCookie.arguments.length
var ThreeDays = 3*24*60*60*1000;
var expDate = new Date();
expDate.setTime (expDate.getTime() - ThreeDays);
for (var n=0; n<nr; n++) {
document.cookie = stergeCookie.arguments[n] + "=DataStearsa; expires=" + expDate.toGMTString();
}
}
// -->
</script>
</head>
<body>
<table border="1" bordercolor="#8888fe" width="580" cellpadding="2" cellspacing="0">
<tr><td>
<form name="preferinte">
Scrieti culoarea favorita:
<input type="text" name="culoare" size="20" maxlength="40" /><br /><br />
Scrieti fructele preferate:
<input type="text" name="fructe" size="20" maxlength="40" /><br /><br />
Scrieti o fraza (un citat) favorita:<br />
<input type="text" name="citat" size="40" maxlength="80" /><br /><br />
<input type="button" value="Favorite" name="buton" onclick="SetCookie()" />
<input type="reset" value="Reset" name="reset" />
</form>
</td><td>
<form name="preferinte2">
<input type="button" value="Afiseaza Favorite" name="buton" onclick="getCookie('cookie1', 'cookie2', 'cookie3')" />
<input type="button" value="Sterge cookie" name="Clear" onclick="stergeCookie('cookie1', 'cookie2', 'cookie3')" />
</form>
<b>Culoare favorita - </b><span id="idculoare"> </span><br />
<b>Fructe preferate - </b><span id="idfructe"> </span><br />
<b>Citat favorit - </b><span id="idcitat"> </span><br />
</td></tr>
</table>
</body>
</html> |
_________________ [url=http://www.fodey.com/generators/animated/ninjatext.asp] [/url] |
|
|
|
|
|
|
|
|
Nu puteti crea un subiect nou in acest forum Nu puteti raspunde in subiectele acestui forum Nu puteti modifica mesajele proprii din acest forum Nu puteti sterge mesajele proprii din acest forum Nu puteti vota in chestionarele din acest forum
|
|