PHP ejemplo sencillo de cartel o aviso de Cookies

Desde que se aprobó el apreciado artículo 22 de la Ley 34/2002, la ley de Cookies para los amigos, en Europa estamos obligados a notificar al usuario si creamos Cookies en sus navegadores. Un sistema simple de almacenamiento que lleva entre nosotros desde hace décadas, apareció en 1995 en Internet Explorer, donde se puede guardar cierta información en sus propios equipos con objetivos tan diversos como mejorar la experiencia de navegación o espiar sus forma de moverse por la red.

Por ello ahora se nos pide crear un pequeño cartel que moleste informe con unos mínimos:

Con PHP podemos mostrar un cartel si no ha aceptado y ocultarlo para siempre si pulsa el botón donde nos da el consentimiento. Todo ello gracias a que podemos… crear una cookie (¿soy el único que detecta la ironía de la situación?).

HTML

Primero maquetamos nuestro cartel. Nuestro botón de aceptar enviará un GET y será visible si no existe el GET o no existe la Cookie politica.

<?php if (!isset($_REQUEST['politica-cookies']) && !isset($_COOKIE['politica'])): ?>
<!-- Mensaje de cookies -->
<div class="cookies">
    <!-- Titulo -->
    <h2>Cookies</h2>
    <!-- Descripción con enlace -->
    <p>¿Aceptas nuestras maligna <a href="/info">política de Cookies</a>?</p>
    <!-- Botón para aceptar -->
    <a href="?politica-cookies=1">Si, con todas sus consecuencias</a>
</div>
<?php endif; ?>

Con un poco de CSS podría quedar de la siguiente manera.

PHP

Lo único que nos interesaría con PHP es crear la Cookie si nos llega el GET politica-cookies.

// Si han aceptado la política
if(isset($_REQUEST['politica-cookies'])) {
    // Calculamos la caducidad, en este caso un año
    $caducidad = time() + (60 * 60 * 24 * 365);
    // Crea una cookie con la caducidad
    setcookie('politica', '1', $caducidad);
}

Completo

Todo unido quedaría de la siguiente forma.

<?php

// Si han aceptado la política
if(isset($_REQUEST['politica-cookies'])) {
    // Calculamos la caducidad, en este caso un año
    $caducidad = time() + (60 * 60 * 24 * 365);
    // Crea una cookie con la caducidad
    setcookie('politica', '1', $caducidad);
}

?>
<!DOCTYPE html>
<html>
<body>
    <div>
        <?php if (!isset($_REQUEST['politica-cookies']) && !isset($_COOKIE['politica'])): ?>
            <!-- Mensaje de cookies -->
            <div class="cookies">
                <h2>Cookies</h2>
                <p>¿Aceptas nuestras cookies?</p>
                <a href="?politica-cookies=1">Aceptar</a>
            </div>
        <?php endif; ?>
    </div>
</body>
</html>
Versión escritorio