Cookies válidas para todo el website
En general, cuando creas una cookie para una acción concreta en un website, no necesitarás que esa cookie sea legible o útil fuera del directorio donde se ha creado. Eso permite también tener la misma cookie (con el mismo nombre) en varios otros directorios distintos, con distintos valores, cada uno de ellos válido para cada uno de los directorios donde se ha creado.
Sin embargo, para los típicos avisos legales sobre cookies, que tan de moda se han puesto desde que nuestro delirante gobierno se ha puesto a multar por algo tan absurdo como que una web genere cookies (llevan haciéndolo casi desde que la web se inventó, y si no quieres que tu navegador las almacene, puedes desactivar su creación), es necesario que la cookie que maneja el hecho de que se muestre o no el aviso legal sea legible desde todo el sitio web.
Es decir, el javascript que crea y lee la cookie deberá estar en todas las páginas del website, porque puedes acceder a ellas no siempre por la portada, sino directamente a una subpágina; esto es muy normal cuando llegas desde una búsqueda de Google o has hecho click en un link que te han enviado por mail, por ejemplo.
En este caso, esa subpágina debe tener el código que escribe y lee la cookie que maneja el aviso legal, pero no es buena idea que cuando el visitante clica en "Si, acepto las cookies" la cookie que escribimos sea válida solo para ese directorio, sino que debería serlo para todo el sitio web, de forma que el aviso legal ya no vuelva a salir por mucho que cambiemos de directorios navegando a través de los menués.
La función "básica" en JS de creación de una cookie es algo como:
function setCookie(c_name, value, exdays)
{
var exdate = new Date();
exdate.setDate( exdate.getDate() + exdays );
var c_value = escape( value ) + ( ( exdays == null ) ? "" : ";
expires=" + exdate.toUTCString() );document.cookie = c_name + "=" + c_value;
}
Como ves, al no llevar ninguan mención al directorio de creación, la cookie que se crea en una página concreta, dentro de un directorio concreto, es válida solo para ese directorio, y no se podrá leer desde ningún otro. Es decir, si la cookie se ha escrito al clicar en una página que está en www.dominio.es/directorioUno/paginacreacookie.html, si navegamos hasta www.dominio.es/directorioDos/paginaleecookie.html nos volverá a salir el aviso de "aceptar cookies" porque la que hemos creadn en la primera página no se puede leer (no está accesible) desde esta última.
Sin embargo, simplemente añadiendo el parámetro "/" le vamos a indicar a la cookie que deberá escribirse en el directorio raiz y estar disponible para todo el website, con lo que, siguiendo el ejemplo del párrafo anterior, si la escribimos desde la primera página, también estará accesible (legible) desde la segunda:
- function setCookie(c_name, value, exdays)
- {
- var exdate = new Date();
- exdate.setDate( exdate.getDate() + exdays );
- var c_value = escape( value ) + ( ( exdays == null ) ? "" : ";
expires=" + exdate.toUTCString() ); - document.cookie = c_name + "=" + c_value + "; path=/";
- }