Cómo crear una cookie

Hacer una cookie es muy fácil. Aquí te enseño cómo crear cookies en PHP y en Javascript.

Cómo crear una cookie en PHP

Este código te sirve para crear una cookie básica, y te servirá para crear cookies más avanzadas en el futuro. Debe introducirse antes de que el sitio web emita cualquier "output".


$caducidad = 60 * 60 * 24 * 30 + time(); 

if($_COOKIE["galleta"] == NULL){
    setcookie("galleta", "crema de chocolate", $caducidad); 
}

Lo que hemos hecho es crear una cookie llamada "galleta", la cual hemos llenado con "crema de chocolate". Puedes cambiar el relleno según el visitante. $caducidad almacena la fecha de caducidad de la cookie; es decir, cuándo desaparecerá del navegador del usuario. Algunas fórmulas:

$day = 60 * 60 * 24 + time(); // en un día
$month = 60 * 60 * 24 * 30 + time(); // en un mes
$year = 60 * 60 * 24 * 365 + time(); // en un año

Cómo crear una cookie en Javascript

Este código permite crear una cookie mediante Javascript. Es útil cuando no puedes utilizar PHP. Sólo debes sustituir el nombre de la cookie (galleta), el contenido (chocolate), su edad máxima (actualmente, un mes) y el dominio.

<script text='javascript'>
    document.cookie =
        'galleta=' + encodeURIComponent('chocolate') +
        '; max-age=' + 60*60*24*30 +
        '; path=/; domain=tudominio.com' ; 
</script>

¿Cómo saber si una cookie funciona?

Instala el plugin ViewCookies para Firefox, y confirma que la cookie aparece.

¿Qué información se puede almacenar en una cookie?

Por legislativa europea, la información personal no se puede almacenar. Sin embargo, aquí dejo algunas ideas bastante útiles:

Almacenar la fecha de la primera visita. Te permite customizar el contenido dependiendo de la "antigüedad" del usuario. Por ejemplo, un usuario que se haya registrado hace más de dos años puede ver promociones especiales:

setcookie("lastVisit", date("G:i - m/d/y"), $caducidad);

Almacenar las visitas realizadas. Si sabes de programación avanzada, mediante un counter puedes almacenar la cantidad de veces que un usuario regresa a una página web en particular. Esto es una aproximación a lo que hacen aerolíneas para mostar un precio más caro a una persona que visite varias veces el mismo vuelo. Sirve también para hacer ofertas más agresivas o descuentos a usuarios que visiten repetidamente una ficha de producto.

$caducidad = 60 * 60 * 24 * 30 + time(); 

if($_COOKIE["visitas"] == NULL){
    setcookie("visitas", 1, $caducidad); 
} else {
    $suma = $_COOKIE["visitas"] + 1;
    setcookie("visitas", $suma, $caducidad); 
}

if ($_COOKIE["visitas"] > 10) {
    echo "¡Tienes un cupón de descuento del 25%!";
}

Customizar contenido según sexo, edad y profesión. Suena absurdo, pero es posible. Si utilizas campañas en la red de Display de Adwords, puedes enfocar una campaña para mujeres y otras para hombres, siempre que estén logueados en Gmail. A cada campaña le asignarás su propia URL destino:

http://www.danielpinero.com/?sexo=hombre
http://www.danielpinero.com/?sexo=mujer

A continuación, este código te permitirá insertar el valor en la cookie.

if($_COOKIE["sexo"] == NULL && $_GET["sexo"] != NULL){
    setcookie("sexo", $_GET["sexo"], $caducidad); 
}

if($_COOKIE["sexo"] == "mujer" || $_GET["sexo"] == "mujer") {
    echo "Ahora el sitio cambiará a rosa";
}

¿Ves las posibilidades? En Google Adwords, puedes segmentar por sexo y edad. En Linkedin Ads, puedes segmentar por edad, sexo, profesión, instituto educativo, puesto laboral, zona de residencia, etc. En Facebook Ads, además de lo anterior, puedes segmentar incluso por estado civil y etnia. Por cada variable segmentable, puedes crear una nueva cookie para mostrar contenido personalizado cada vez que el usuario regrese. A diferencia de la sesión en PHP, la cookie no expira inmediatamente.

Almacenar variables de ValueTrack. Mediante el etiquetado ValueTrack de Adwords, es posible almacenar variables tan específicas como tipo de concordancia, red, dispositivo, modelo del dispositivo, creatividad del anuncio, keyword, dominio de la primera visita, ID del producto para campañas orientadas a un producto específico, y muchos otros detalles.

Mantener el primer referido. Esto es una alternativa al "nooverride" de Google, que tiene el bug de sobreescribir valores antiguos con tráfico orgánico proveniente de su motor de búsqueda. Así almacenarás el origen de la primera visita de ese usuario.

if($_COOKIE['php_referral'] == NULL) {
    setcookie('php_referral', $_SERVER['HTTP_REFERER'], $caducidad);
}

Almacenar IP. Añadiendo el código de mi anterior artículo "Cómo ver la IP de un visitante en Google Analytics", puedes también almacenar IP, mientras no se considere información personal y sea por cuestiones de seguridad.

Pasar cookies a afiliados. Puedes etiquetar enlaces a afiliados añadiendo el contenido de las cookies, para que ellos los puedan recuperar mediante $_GET, Google Analytics o su propio programa de afiliación. Por ejemplo:

$url = "http://www.marketinet.com/?sexo=".$_COOKIE["sexo"];
echo $url;

Dicho código produciría el siguiente enlace, el cual puede ser aprovechado por el sitio web destino, de modo que reconozca que el visitante es una mujer:

http://www.marketinet.com/?sexo=mujer

Legalidad de las cookies

Recientemente, la Unión Europea ha emitido una directiva que obliga a alertar a los usuarios sobre el uso de cookies. En mi post "Cómo crear un aviso legal de cookies" encontrarás cómo cumplir esta directiva.

Escribe tu comentario comment4 Comentarios
  1. 2015-08-15 Noemí

    Hola! fantástico, esto no lo conocía, pero ¿es legal hacer eso de las cookies? A ver si lo voy a llevar a cabo y me voy a meter en un lío Gracias Saludos Noe

    • 2015-08-15 Daniel Piñero

      Hola Noemí. Sí es legal, pero si estás en Europa es importante que insertes un aviso legal de cookies. Puedes encontrar cómo en mi post http://www.danielpinero.com/como-crear-aviso-legal-cookies

    2014-12-19 Jorge Garduza

    Hola amigo, una consulta, esta cookies la puedo usar en proceso ejemplo: tengo un textbox llamado cbarras2 al hora de escribir un numero eje: 6000001 busca en la base de datos, si no lo encuentra me habre un popup con javascript para llenar el formulario con los datos, sí lo encuentra me actualiza un campo dentro de mi tabla perooooo el problema es aqui que en vez de actualizarme solo la pagina me abre el popup

    • 2014-12-19 Daniel Piñero

      Hola. La cookie la puedes crear y comprobar tanto en PHP como en Javascript. Lo que me comentas es posible.

mode_editEscribe tu comentario

menu
menu