Cookies: Uso en JavaScript Sergio Luján Mora sergio.lujan@ua.es Cook-03 Vídeo de esta presentación Puedes ver esta presentación en vídeo: http://www.youtube.com/watch?v=i__IbhyrB28 La información se almacena a petición del servidor web: -Directamente desde la propia página web con JavaScript document.cookie -Desde el servidor web mediante las cabeceras HTTP PHP: setcookie() y $_COOKIE Una pareja nombre/valor Un dominio Una ruta Una fecha de caducidad o máxima edad Una marca de sólo conexión segura Una marca de sólo HTTP document.cookie: – Define, modifica o borra una cookie si ya existe – Devuelve todas las cookies de la página actual – El acceso no es directo, ya que devuelve una única cadena que contiene todas las cookies de la página (separadas por “;”) – Para acceder a una cookie concreta, es necesario analizar la cadena para localizar su valor javascript:alert(document.cookie) javascript:alert(document.cookie) document.cookie setCookie() recibe tres parámetros: – El nombre de la cookie (c_name) – El valor de la cookie (value) – La fecha de caducidad como el número de días a partir de la fecha actual (expiredays) function setCookie(c_name, value, expiredays) { var exdate = new Date(); exdate.setDate(exdate.getDate() + expiredays); document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires="+ exdate.toUTCString()); } getCookie(): – Recibe sólo un parámetro, el nombre de la cookie que se quiere recuperar (c_name) function getCookie(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)); } } return ""; } Para borrar una cookie, se tiene que asignar a la cookie una fecha de caducidad (expires) en el pasado: setCookie("nombre", "", -1); function setCookie(c_name, value, expiredays) { var exdate = new Date(); exdate.setDate(exdate.getDate() + expiredays); document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires="+ exdate.toUTCString()); } function getCookie(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)); } } return ""; } Sergio Luján Mora; Alicante escape() Sergio%20Luj%E1n%20Mora%3B%20Alicante unescape() Sergio Luján Mora; Alicante prueba.html cookies.js ejemplo.js <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Prueba de JavaScript</title> <script src="cookies.js"></script> </head> <body> <p> <script src="ejemplo.js"></script> </p> </body> </html> var ahora = new Date(); var registro = getCookie("registro"); if(registro != "") { var arrayRegistro = registro.split("|"); for(i = 0; i < arrayRegistro.length; i++) document.write(arrayRegistro[i] + "<br />"); registro += "|"; } setCookie("registro", registro + ahora.toUTCString(), 365); Sun%2C%2030%20Oct%202011%2016%3A09%3A17%20GMT%7CSun%2C%2030%20Oct%202011%2016%3A10%3A42%20GMT unescape() Sun, 30 Oct 2011 16:09:17 GMT|Sun, 30 Oct 2011 16:10:42 GMT Más información: http://accesibilidadweb.dlsi.ua.es/ http://desarrolloweb.dlsi.ua.es/ sergio.lujan@ua.es Créditos de fotografías e imágenes: http://www.sxc.hu/photo/1282932 http://www.sxc.hu/photo/1334872