Javascript y cookies

Tenemos un problema. Queremos subir una página a un servidor temático que está bajo linux y nosotros lo que controlamos es ASP. Por ello nos vemos obligados a manejar ciertas cosillas que iban a ir en ASP con Javascript.
¿Nos podrías decir si se pueden manejar cookies con javascript y cómo?
También queríamos llevar una base de datos, para almacenar respuestas de un formulario, pero visto que no podemos manejar lenguaje desde el servidor, habría alguna forma de almacenar los resultados en la máquina cliente a modo de almacenamiento cutre, ¿mediante cookies?

1 respuesta

Respuesta
1
Desde mi punto de vista, y he desarrollado en muchos lenguajes y plataformas, Javascript es la mejor manera de manejar cookies. Con lenguajes de servidor hay limitaciones, sobre todo debidas a cuándo es posible dejar una cookie en el cliente (siempre con la carga de una página), mientras que Javascript es totalmente flexible, y permite crear una cookie en cualquier momento.
La base del manejo de cookies es el objeto document. Cookie. Mediante este objeto es posible acceder a las cookies asociadas a la página (en lectura) o poner una nueva (asignando document. Cookie a una cadena de texto).
En su forma más básica, las cookies son pares "nombre=valor", pero hay una sintaxis adicional para especificar cuándo expiran, el path de la página a la que se asocia (para el que es válida), el dominio al que pertenecen (para el que son válidas) o si sólo deben ser transmitidas mediante el protocolo https (para tiendas online y bancos).
Aunque se puede hacer a mano, lo mejor es usar estas funciones estándar para acceder y escribir correctamente cookies:
function setCookie(cookieName,cookieValue,expires,path,domain,secure) {
document.cookie=
escape(cookieName)+'='+escape(cookieValue)
+(expires?'; EXPIRES='+expires.toGMTString():'')
+(path?'; PATH='+path:'')
+(domain?'; DOMAIN='+domain:'')
+(secure?'; SECURE':'');
}
function getCookie(cookieName) {
var cookieValue=null;
var posName=document.cookie.indexOf(escape(cookieName)+'=');
if (posName!=-1) {
var posValue=posName+(escape(cookieName)+'=').length;
var endPos=document.cookie.indexOf(';',posValue);
if (endPos!=-1) cookieValue=unescape(document.cookie.substring(posValue,endPos));
else cookieValue=unescape(document.cookie.substring(posValue));
}
return cookieValue;
}
Sólo los valores cookieName y cookieValue son obligatorios. Lo svalores por defecto para los demás son:
- Expires: si no se pone, la cookie desaparece cuando el usuario cierre el navegador. Si se pone una fecha anterior a la actual, la cookie pierde validez inmediatamente y se borrará en cuanto el navegador se cierre (es como borrarla inmediatamente).
- Path: toma por defecto el path de la página que la establece, en el servidor.
- Domain: toma por defecto el dominio de la página que la establece.
- Secure: por defecto no está activada.
Algunos ejemplos:
setCookie('miCookie','42');
Crea una cookie con nombre 'miCookie' y valor '42' (el valor siempre es una cadena de caracteres), que expirará cuando acabe la sesión actual.
var ahora=new Date();
var manyana=new Date(now.getTime()+1000*60*60*24)
setCookie('miCookie','información importante',manyana);
Esta cookie expirará en 24 horas.
alert(getCookie('miCookie'));
Muestra 'información importante' en un mensaje de aviso.
Sobre bases de datos con cookies, en la siguiente respuesta...
Hasta dónde queráis llevar vuestro uso de las cookies depende de vosotros... No suelen usarse para nada crítico, debido a que el usuario puede encontrarlas y modificarlas fácilmente (son archivos de texto, y en Windows están en el directorio \WINDOWS\COOKIES, por defecto). Salvo que los datos que queráis guardar sean pocos (hay limitaciones: 300 cookies en total por cliente, 20 cookies por dominio y máximo de 4kB por cookie) y poco importantes, os recomiendo vivamente que aprendáis a manejar PHP (casi seguro que será lo que tenga vuestro servidor). Es más sencillo que ASP, a mi entender, y también funciona en Windows (más información en http://www.php.net). Muy probablemente dispongáis también de una base de datos como MySQL, que se maneja de forma estándar (es decir, una vez que averigüéis cuál es la forma de conexión, y PHP tiene módulos para eso, podéis usar SQL estándar).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas