Pagina de start a forumului Comunitatea JustUs  
FAQ Cautare
Membri Grupuri
Profil Mesaje private
Inregistrare Autentificare
Cookie-uri II
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului Comunitatea JustUs Tutoriale JavaScript
Subiectul anterior :: Subiectul urmator  
Autor Mesaj
Elektro_Love
Administrator
Administrator
Elektro_Love

Data inscrierii: 21/Iul/2010
Mesaje: 101

MesajTrimis: 21/07/2010 23:52    Titlul subiectului: Cookie-uri II Raspunde cu citat (quote)

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()" />&nbsp;
<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')" />&nbsp;
<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]Cookie-uri II Cookie-uri II[/url]
Vezi profilul utilizatorului Trimite mesaj privat
Afiseaza mesajele pentru a le previzualiza:   
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului Comunitatea JustUs Tutoriale JavaScript Ora este GMT + 3 ore
Pagina 1 din 1

 
Mergi direct la:  
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
ezHyperShadow template - a boo design Original ezHyperShadow theme by boo ©2004 www.ez-life.net
Powered by phpBB © 2001, 2002 phpBB Group
Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro