31 d’octubre 2005

odio les cookies

Us heu imaginat el món complex de les cookies algun cop?

Doncs no ho feu, en serio, és el pitjor del món i m'ha fet passar una setmana de merda. Proximament us parlaré d'elles, tot i que no us importi, posaré una serie de funcions per fer-les funcionar i amb això em declaro casi, coneixedora d'elles.

See you!

--------------------------------------------------------
Odio les cookies - Segona part

Com ja podeu haver llegit, he estat amb una pràctica sobre crear cookies que al final haurà estat de profit i tot. Beno a continuació, us interessi o no (sincerament, tan se'm dona, eh Roger!!) us posaré algunes funcions sobre les cookies per fer més interessant, si cap, aquest blog.


Primer de tot declara unes cosetes que ens faràn falta, segur:
var cookie_nombre = 'usuarios'
var cookie_contador = 'visitas'
var fin_de_cookie = new Date (2007, 12, 31);

1r.Serveix per posar un comptador de visites a la pàgina.
function visita(){
var HoraFi=new Date();
var ultimavisita="Ultima_Visita"+"=";
var posicioinicial=document.cookie.indexOf(ultimavisita);
if( posicioinicial == -1 ) {
document.write("És el primer cop que s'entra a la pàgina");
}else {
posicioinicial = posicioinicial + ultimavisita.length;

//Busquem el final de la data
var posiciofinal = document.cookie.indexOf(";", posicioinicial);
if (posiciofinal == -1 ){
posiciofinal = document.cookie.length;
}
ultimavisita = unescape(document.cookie.substring(posicioinicial,posiciofinal));
document.write(ultimavisita);
//if (navigator.javaEnabled) {
//document.write("
"+navigator.myIpAddress());
//}
}
HoraFi.setTime(HoraFi.getTime()+2000*60*60);
ultim_dia=HoraFi.toGMTString();
HoraFi.setTime(HoraFi.getTime()+1000*60*60*24*31); //Hora a la que expira
document.cookie="Ultima_Visita"+"="+escape(ultim_dia)+";expires="+HoraFi.toGMTString();
}

2n.Aquest envia una cookie a través de la xarxa
function enviar_cookie (nombre_de_cookie, valor_de_cookie, fin_de_cookie){
document.cookie = nombre_de_cookie + "=" + escape(valor_de_cookie) +
((fin_de_cookie == null) ? "" : ("; expires=" + fin_de_cookie.toGMTString()))
}

3r. Llegir de la cookie
function consultar_cookie (nombre_de_cookie){
var buscar_cookie = nombre_de_cookie + "=";
if (document.cookie.length > 0){
i = document.cookie.indexOf(buscar_cookie);
if (i != -1){
i += buscar_cookie.length;
j=document.cookie.indexOf (";", i);
if (j == -1) j = document.cookie.length;
return unescape (document.cookie.substring (i,j));
}
}
}

4rt. Codi que només obrir una pàgina et demana el nom i el guarda en una cookie per tal de poder portar a la fi, entre altres coses, el comptador de visites.
function contador (){
if (!(numero = consultar_cookie (cookie_contador))) {
numero = 0;
numero++;
}else{
numero++;
}
enviar_cookie (cookie_contador, numero, fin_de_cookie);
}

5è. I ja per recoxineo una funció per unir tot lo anterior i printar-ho per pantalla més maco ¬¬
function cookies (){
obtener_nombre ()
contador ()
nom_usuari = consultar_cookie (cookie_nombre)
nombre_de_visites = consultar_cookie (cookie_contador)
document.write ('Benvingut '+nom_usuari+'.')
if (numero == 1){
document.write (' Has visitat aquesta pàgina
'+numero+' vegada.')
}else{
document.write (' Has visitat aquesta pàgina '+numero+'vegades.')
}
}

6è. Restriccions sobre aquestes galetes (no precisament de xocolata) :p
Màxim de 300 cookies en l'arxiu cookies.txt. Si s'excedeix aquest límit, s' eliminen les menys recents.
Màxim de 4 Kb per cookie. Si s'excedeix aquest límit, es "trunca" la cookie deixant intacte el nom, sempre que aquest no exedeixi de les 4kb.
20 cookies per servidor o domini. Si s'excedeix aquest límit, s'eliminen les menys recents.

I per acabar, com no, posar unes adreces de referència per si algun dia algú que llegeixi un post (i que entengui) com aquest té dubtes ja sap on acudir:

http://www.iec.csic.es/criptonomicon/cookies/cookies.html
http://www.maestroteca.com/documentos/galletas.htm

Apa, aquesta nit podré dormir tranquil·la. Byee!!!

1 comentari:

... ha dit...

aiiii, xaval...fes-t'ho mirar que treballar de nit no et va bé, xato!
I apren dels futurs posts que possi sobre el tema :p