Portada del foro Desarrollo de Dominios Desarrollo de dominios: Diseño / Programación Código para cumplir con la ley de cookies

Código para cumplir con la ley de cookies

#1 por (Iniciador del hilo) muchacho el Mar Oct 08, 2013 1:22 pm

Me han pedido que muestre el código que uso en http://mediasmaratones.info/ para cumplir con la ley de cookies así que lo pongo por aquí, aunque casi todo se puede ver simplemente con darle en el navegador a ver el código fuente. Antes de nada comento lo que hace para cumplir con esa ley de cookies... habrá otras implementaciones, pero esta es mi interpretación de la ley.

Para cumplir con la ley se podría hacer que el usuario tuviese que dar su consentimiento explícito ya fuera pinchando en un enlace o pulsando un botón, pero también es válida la opción de informar al usuario de que el sitio usa cookies y para qué y avisarle de que si sigue navegado por el sitio se entiende que acepta el uso de cookies, esta segunda forma es la que he elegido.

Para ello, cuando visita la página alguien que no ha aceptado aún el uso de cookies se podría por ejemplo colocar algo en los enlaces internos para que si los sigue al cargar la siguiente página se guarde una cookie que diga que el usuario permite las cookies. Pero también se permite entender que si usa la barra de desplazamiento también es como que sigue navegando y el usuario aceptaría las cookies, esta es la que he usado porque me gusta más que la idea de "enguarrar" los enlaces.

Total, que al llegar una persona por primera vez al sitio se le muestra en la parte superior de la página un aviso de que usamos cookies para mostrar publicidad y que si continúa navegando por el sitio entenderemos que le parece bien. Ese aviso también incluye un enlace a la página donde se explica que son las cookies, las que usa el sitio y para que, y como borrarlas. Y la posibilidad de ocultar ese aviso.

Si mueve la barra de desplazamiento se le planta una cookie de las llamadas de preferencias en la que da permiso. En próximas cargas de páginas del sitio se evaluará si esa cookie está presente y (en el caso de este sitio) se mostrará publicidad de adsense o no.

Como ya comenté, en la página llamada Política de Cookies se explica el tema este de las cookies y se muestra que cookies usa el sitio, para qué y si se han guardado en el pc del usuario (y en caso de que sí incluye un enlace para borrarlas), además de enlaces a como tratar las cookies en diferentes navegadores. Este es el código completo que usa la página http://mediasmaratones.info/cookies.php (también puede verse en http://mediasmaratones.info/cookies.txt):

Código: Seleccionar todo
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Política de Cookies</title>
<style type="text/css">
.delete{color:#039;text-decoration:underline;cursor:pointer}body{font-family:Verdana,sans-serif;font-size:14px;background-color:#f9f9f9;margin:10px 0px;padding:0px;text-align:center}#cookies{width:1000px;margin:10px auto;text-align:left;padding:15px;border:1px solid #b5b5b5;background-color:#eee}#content{width:1000px;margin:0px auto;text-align:left;padding:15px;border:1px solid #b5b5b5;background-color:#fff}a:link,a:visited{color:#039}h3{padding:0px;margin:0px}#mnm{color:#039;text-decoration:underline;cursor:pointer}hr{height:1px;color:#b5b5b5;background:#b5b5b5;border:0}
<?php
$i_want_cookies = $_REQUEST['i_want_cookies'];
$message_no_more = $_REQUEST['message_no_more'];
if (isset($message_no_more)) print("#cookies{display:none}\n");
else print("#delete_mnm{display:none}\n");
if (!isset($i_want_cookies)) print("#delete_iwc{display:none}\n");
?>
</style>
<link rel="shortcut icon" href="/favicon.ico">
<script type="text/javascript">
var user_has_scrolled = 0;
window.onscroll = scroll;
function scroll()
{
  if (user_has_scrolled != 1)
  {
    user_has_scrolled = 1;
    var expiration_date = new Date();
    expiration_date.setDate(expiration_date.getDate() + 365);
    document.cookie = "i_want_cookies=1" + "; expires=" + expiration_date.toUTCString(); + "path=/";
    var mensaje_borrar_iwc = document.getElementById('delete_iwc');
    mensaje_borrar_iwc.style.display = 'inline';
  }
}
function create_cookie(name,value,days)
{
  if (days)
  {
    var date = new Date();
    date.setTime(date.getTime() + (days*24*60*60*1000));
    var expires = "; expires=" + date.toGMTString();
  }
  else var expires = "";
  document.cookie = name + "=" + value+expires+"; path=/";
}
function erase_cookie(name)
{
  create_cookie(name,"",-1);
}
function add_event()
{
  var delete_iwc = document.getElementById('delete_iwc');
  delete_iwc.addEventListener('click', delete_iwc_func, false);
  var delete_mnm = document.getElementById('delete_mnm');
  delete_mnm.addEventListener('click', delete_mnm_func, false);
  var mnm = document.getElementById('mnm');
  mnm.addEventListener('click', mnm_func, false);
}
function mnm_func()
{
  var aviso_cookies = document.getElementById('cookies');
  aviso_cookies.style.display = 'none';
  var mensaje_borrar_mnm = document.getElementById('delete_mnm');
  mensaje_borrar_mnm.style.display = 'inline';
  var expiration_date = new Date();
  expiration_date.setDate(expiration_date.getDate() + 365);
  document.cookie = "message_no_more=1" + "; expires=" + expiration_date.toUTCString(); + "path=/";
}
function delete_iwc_func()
{
  var mensaje_borrar_iwc = document.getElementById('delete_iwc');
  mensaje_borrar_iwc.style.display = 'none';
  erase_cookie('i_want_cookies');
  user_has_scrolled = 0;
}
function delete_mnm_func()
{
  var mensaje_borrar_mnm = document.getElementById('delete_mnm');
  mensaje_borrar_mnm.style.display = 'none';
  var aviso_cookies = document.getElementById('cookies');
  aviso_cookies.style.display = 'block';
  erase_cookie('message_no_more');
}
</script>
</head>
<body onload="add_event();">
<div id="cookies">
Utilizamos cookies de terceros para mostrarte publicidad relacionada. Al continuar navegando, consideramos que aceptas su uso. Puedes encontrar más información, y cambiar tus preferencias, en nuestra <a href="/cookies.php">política de cookies</a>. &nbsp; &nbsp; <span id="mnm">No mostrar más este mensaje [x]</span>
</div>

<div id="content">

<div align="center">
  <a href="http://mediasmaratones.info/" title="Medias Maratones en España"><img src="/medias-maratones-info.gif" alt="Medias Maratones" width="725" height="77"></a>
</div>

<h1>Cookies</h1>
Las <a href="http://es.wikipedia.org/wiki/Cookie_%28inform%C3%A1tica%29">cookies</a> son pequeños ficheros que se descargan en su equipo a través del navegador para almacenar información y recuperarla en posteriores visitas. En MediasMaratones.info utilizamos cookies propias para recordar sus preferencias, y cookies de terceros que son usadas por Google Adsense para mostrar publicidad personalizada.<br><br>

<h2>Cookies propias</h2>
Este sitio web utiliza cookies propias (que son aquellas generadas y gestionadas por esta web) para guardar sus preferencias sobre el uso de cookies de terceros. Estas son las cookies propias que utiliza el sitio:<br>
- <b>i_want_cookies</b>, indica si se permite guardar cookies o no. <span id="delete_iwc" class="delete">[borrar cookie]</span><br>
- <b>message_no_more</b>, sirve para indicar si no se desea que se siga mostrando el mensaje de aviso sobre las cookies. <span id="delete_mnm" class="delete">[borrar cookie]</span><br><br>

<h2>Cookies de terceros</h2>
Este sitio web utiliza cookies de terceros, el proveedor de publicidad del sitio (Google Adsense) las utiliza para personalizar los anuncios que aparecen en el sitio.<br><br>

<h3>Google Adsense</h3>
Google, como proveedor asociado, utiliza cookies para publicar anuncios en este sitio web. Los usuarios pueden inhabilitar el uso de la cookie de DART a través del anuncio de Google y accediendo a la <a href="http://www.google.es/privacy_cookies.html">política de privacidad de la red de contenido</a>. Google utiliza empresas publicitarias asociadas para publicar anuncios cuando visita nuestro sitio web. Es posible que estas empresas usen la información que obtienen de sus visitas a este y otros sitios web (sin incluir su nombre, dirección, dirección de correo electrónico o número de teléfono) para ofrecerle anuncios sobre productos y servicios que le resulten de interés. Si desea obtener más información sobre esta práctica y conocer sus opciones para impedir que estas empresas usen esta información, <a href="http://www.google.es/privacy_cookies.html">haga clic aquí</a>.<br><br>

<h2>No permitir cookies</h2>
Si lo desea puede configurar su navegador para que impida la instalación de cookies en su ordenador y borrar las ya instaladas, tanto las cookies propias como las de terceros, sin que ello afecte de manera importante a la navegación por el sitio.<br><br>

Si no desea permitir el uso de cookies puede desactivarlas y borrarlas desde su navegador. Normalmente este ajuste se suele encontrar en el menú de "opciones" o "preferencias", en los siguientes enlaces puede encontrar las instrucciones para los navegadores más utilizados: <a href="http://support.google.com/chrome/bin/answer.py?hl=es&amp;answer=95647">Chrome</a>, <a href="http://windows.microsoft.com/es-es/windows7/how-to-manage-cookies-in-internet-explorer-9">Explorer</a>, <a href="http://support.mozilla.org/es/kb/habilitar-y-deshabilitar-cookies-que-los-sitios-we">Firefox</a>, <a href="http://www.opera.com/help/tutorials/security/privacy/">Opera</a> y <a href="http://support.apple.com/kb/ph5042">Safari</a>.
<br>
<br>
<hr>
<br>
<div align="center"><a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a> & <a href="http://validator.w3.org/check?uri=referer">HTML</a> Valid &bull; <a href="/contacto.php">Contacto</a> &bull; <a href="/cookies.php">Política de Cookies</a> &bull; Corre <a href="/">MediasMaratones.info</a> &bull; Ver también 42K: <a href="http://maratones.info/">Maratones.info</a></div>
</table>

</div>

</body>
</html>


Para adaptar esta cookies.php a vuestro sitio bastaría con pegar el javascript y esas pocas líneas de PHP que añaden algo de CSS y listo. Para el resto de páginas basta con usar lo mismo (se puede quitar del javascript las funciones delete_iwc_func() y delete_mnm_func() y alguna cosa más, pero si se deja intacto el javascript debería funcionar igual), y luego ya es incluir algo así donde corresponda:

Código: Seleccionar todo
<?php
$i_want_cookies = $_REQUEST['i_want_cookies'];
if (isset($i_want_cookies))
{
  // aquí mostrar publicidad de adsense, meter el código del analytics o lo que sea que necesite permiso por las cookies.
}
?>


Si algo he explicado mal, o algo no está correcto o tenéis alguna duda preguntad lo que sea.
Avatar de Usuario
muchacho
Primer puesto en el concurso web verano 2014 Segundo puesto en el concurso web invierno 2012 Segundo puesto en el concurso web invierno 2016
 
Ene '06 | 20575 Mens.
FD$: 871
Lugar: Logroño España

Re: Código para cumplir con la ley de cookies

#2 por Minix el Mar Oct 08, 2013 7:20 pm

:clap: :clap: :clap: :clap: Gracias por compartirlo!
Avatar de Usuario
Minix
Primer puesto en el concurso web verano 2014 Tercer puesto en el concurso web invierno 2016
Ganador de la Liga Fantástica 2015-2016 y 2016-2017
 
Dic '09 | 3029 Mens.
FD$: 4055
Lugar: Ciudad de México México

Re: Código para cumplir con la ley de cookies

#3 por Jesus el Mar Oct 08, 2013 9:10 pm

muchas gracias por compartir! :thumbsup:
Avatar de Usuario
Jesus
 
Abr '08 | 1050 Mens.
FD$: 718
Lugar: Cerca de Zaragozá España

Re: Código para cumplir con la ley de cookies

#4 por congancho el Mié Oct 09, 2013 10:33 am

:clap: :clap: :clap: :clap: :clap: :clap: :clap: :clap:
Avatar de Usuario
congancho
Segundo en el concurso web del 2010 Ganador concurso web verano 2012
 
Jul '10 | 2791 Mens.
FD$: 283
Lugar: Madrid (España) España

Re: Código para cumplir con la ley de cookies

#5 por congancho el Mié Oct 09, 2013 10:35 am

Uy, una cosilla @muchacho ... con este código consigues que no se ponga la cookie de analytics hasta que el usuario no acepte (tácita o físicamente) el uso de cookies... pero... la primera visita del usuario nunca se contabilizará, no???

Las visitas que entran, consultan y se van las estarías perdiendo de analytics??
Avatar de Usuario
congancho
Segundo en el concurso web del 2010 Ganador concurso web verano 2012
 
Jul '10 | 2791 Mens.
FD$: 283
Lugar: Madrid (España) España

Re: Código para cumplir con la ley de cookies

#6 por (Iniciador del hilo) muchacho el Mié Oct 09, 2013 12:28 pm

@congancho ...es correcto, pero creo (la verdad es que de analytics no tengo idea) que se le puede hacer que no ponga la cookie y aún así cuente la visita aunque no sea al detalle:
http://stackoverflow.com/questions/1066 ... -users-who
http://techpad.co.uk/content.php?sid=205
Avatar de Usuario
muchacho
Primer puesto en el concurso web verano 2014 Segundo puesto en el concurso web invierno 2012 Segundo puesto en el concurso web invierno 2016
 
Ene '06 | 20575 Mens.
FD$: 871
Lugar: Logroño España

Re: Código para cumplir con la ley de cookies

#7 por Simbionte el Jue Oct 10, 2013 11:17 pm

:clap: :clap: :clap: :clap: :clap:

Gracias Muchaco!

Una duda,

¿imposible que se le manda la cookie cuando haga scroll?

Saludos!
Avatar de Usuario
Simbionte
Segundo puesto en el concurso web 2015
 
Feb '10 | 1066 Mens.
FD$: 627
Lugar: Madrid España

Re: Código para cumplir con la ley de cookies

#8 por RafaB el Jue Oct 10, 2013 11:53 pm

Aportando difusión en la medida de lo posible... http://bordes.org/2305/hablando-de-cook ... -solucion/
Avatar de Usuario
RafaB
Primero en el concurso web del 2010 Primer puesto en el concurso web invierno 2013 Primer puesto en el concurso web invierno 2014 Primer puesto en el concurso web verano 2016 Primer puesto en el concurso web invierno 2016 Segundo en el concurso web del 2011 Segundo puesto en el concurso web invierno 2013 Segundo puesto en el concurso web invierno 2014 Segundo puesto en el concurso web 2015 Segundo puesto en el concurso web invierno 2015 Tercero en el concurso web del 2010
 
Dic '07 | 5712 Mens.
FD$: 513
Lugar: Pego (Alicante) España

Re: Código para cumplir con la ley de cookies

#9 por (Iniciador del hilo) muchacho el Vie Oct 11, 2013 8:49 am

La cookie del analytics? No sé, no he mirado mucho el tema, pero igual se podría hacer que al hacer scroll, tras colocar la cookie de que acepta las cookies... se hiciera que se recargara la página... tendría un problema (aparte de incordiar un poco al usuario), que si tiene el navegador de modo que no acepte ninguna cookie se le recargaría la página cada vez que intentara hacer scroll :lol: (se podría remediar, colocando por ejemplo un parámetro a la(s) url(s) para que no intente recargarse en adelante).
Avatar de Usuario
muchacho
Primer puesto en el concurso web verano 2014 Segundo puesto en el concurso web invierno 2012 Segundo puesto en el concurso web invierno 2016
 
Ene '06 | 20575 Mens.
FD$: 871
Lugar: Logroño España

Re: Código para cumplir con la ley de cookies

#10 por congancho el Sab Oct 12, 2013 9:44 am

Quizá recargando por ajax en una capa el código de analytics y recargando tdas las capas donde hubiera adsense... pero no se cómo se comportaría...
Avatar de Usuario
congancho
Segundo en el concurso web del 2010 Ganador concurso web verano 2012
 
Jul '10 | 2791 Mens.
FD$: 283
Lugar: Madrid (España) España

Re: Código para cumplir con la ley de cookies

#11 por Simbionte el Lun Oct 14, 2013 11:35 am

muchacho Vie Oct 11, 2013 7:49 am escribió:La cookie del analytics? No sé, no he mirado mucho el tema, pero igual se podría hacer que al hacer scroll, tras colocar la cookie de que acepta las cookies... se hiciera que se recargara la página... tendría un problema (aparte de incordiar un poco al usuario), que si tiene el navegador de modo que no acepte ninguna cookie se le recargaría la página cada vez que intentara hacer scroll :lol: (se podría remediar, colocando por ejemplo un parámetro a la(s) url(s) para que no intente recargarse en adelante).


:pienso: :pienso: ¿y con javascript no se podría?
Avatar de Usuario
Simbionte
Segundo puesto en el concurso web 2015
 
Feb '10 | 1066 Mens.
FD$: 627
Lugar: Madrid España

Re: Código para cumplir con la ley de cookies

#12 por (Iniciador del hilo) muchacho el Lun Oct 14, 2013 11:54 am

Sin recargar? creo que sí pero por ahora no lo voy a intentar (es que no uso GA)... yo creo que probaría primero con la última respuesta de http://stackoverflow.com/questions/7535 ... javascript ...pero es una respuesta de hace 4 años, ni sé si han cambiado el código o qué se yo.
Avatar de Usuario
muchacho
Primer puesto en el concurso web verano 2014 Segundo puesto en el concurso web invierno 2012 Segundo puesto en el concurso web invierno 2016
 
Ene '06 | 20575 Mens.
FD$: 871
Lugar: Logroño España

Re: Código para cumplir con la ley de cookies

#13 por Simbionte el Mar Oct 15, 2013 12:44 pm

gracias! intentaré probarlo
Avatar de Usuario
Simbionte
Segundo puesto en el concurso web 2015
 
Feb '10 | 1066 Mens.
FD$: 627
Lugar: Madrid España

Re: Código para cumplir con la ley de cookies

#14 por pgb el Lun Nov 11, 2013 4:24 am

No sé vosotros pero yo sigo buscando una solución ideal.

Actualmente estoy haciendo pruebas con este: http://cookieguard.eu/

Parece el más completo.

- Permite instalar unas cookies si y otras no, informando al usuario, sin tener que echarle de la web si no quiere algunas de ellas..etc.
- no es intrusivo en la web, si no que corre la web hacia abajo,
- no hace falta tocar la web, editar todos los códigos de google o similar, solo es un trozo de código colocado en el HEAD, del tipo:

Código: Seleccionar todo

<script type="text/javascript" src="scripts/jquery.1.7.2.js"></script>
    <script type="text/javascript" src="scripts/jqueryCookieGuard.1.0.js"></script>
   
    <script type="text/javascript">
        $(document).ready(function() {
            $.cookieguard();

            $.cookieguard.cookies.add('Google Analytics', '__utma,__utmb,__utmc,__utmz', 'These cookies are used to collect information about how visitors use our site. We use the information to compile reports and to help us improve the site. The cookies collect information in an anonymous form, including the number of visitors to the site, where visitors have come to the site from and the pages they visited.', true);
            $.cookieguard.cookies.add('Fortune Cookie', '_fortunecookie', 'This is a ficticious demonstration cookie. Are you feeling lucky?', false);
           
            $.cookieguard.run();
        });
    </script>
   


Hasta ahí todo perfecto. Solo un problema... no funciona :pc:

Los pasos son sencillos asi que no sé donde puede estar el error. ¿Alguien que lo implemente y ponga las cookies de Google (analíticas y adsense) como no esenciales y sea capaz de que se le bloqueen?
Pensando en verde
Avatar de Usuario
pgb
 
Sep '10 | 850 Mens.
FD$: 562

Re: Código para cumplir con la ley de cookies

#15 por tronox el Lun Nov 11, 2013 2:26 pm

Yo tampoco he econtrado plugin alguno para implementar en unas webs joomla que tengo, y que se activase por consentimiento tácito, es decir, tras pasar unos segundos en la web, o pinchando en algún enlace. Y alguno que he probado me supuso graves problemas. Dependiendo de la configuración de cada usuario, había algunos que no se podian después loguear en la web, que les tiraba error, y luego la pérdida de visitas era dramática, por culpa del dichoso popup.
tronox
 
Oct '11 | 54 Mens.
FD$: 44

Siguiente >

Portada del foro Desarrollo de Dominios Desarrollo de dominios: Diseño / Programación



cron