Cómo usar cookies con PHP

Qué son las cookies

No puedo explicar cómo se usan las cookies sin primero tener una idea clara de qué son, ¿cierto?

Las cookies (en el contexto de una aplicación web) son datos que se almacenan del lado del cliente y que se envían al servidor junto con cada petición.

Cómo funcionan las cookies

Para comprender cómo funcionan las cookies es importante repasar un poco el modelo de ejecución de una aplicación web debemos tener en la cabeza dos lugares y momentos diferentes para los que debemos preparar a nuestras aplicaciones:

  1. El servidor
  2. El cliente

El código PHP que escribimos se ejecuta íntegramente del lado del servidor. En el contexto de una aplicación web, esto sucede como respuesta a una petición realizada por un cliente.

El servidor responde, usualmente, con código HTML que será interpretado por el cliente.

Pero la comunicación entre el cliente y el servidor incluye otra información que no está visible a simple vista.

Cuando el cliente realiza una petición lo primero que envía al servidor son una serie de encabezados que establecen reglas básicas sobre lo que sucederá a continuación.

¿Qué tiene esto que ver con las cookies? Pues que las cookies se envían del cliente al servidor a través de un ecabezado HTTP.

Es fácil ver esto usando una herramienta como la consola del desarrollador de tu navegador.

Si visitas un sitio cualquiera (como ser academy.leewayweb.com) con tu consola abierta verás algo como:

Esa es información que el cliente envía en cada petición al sitio que estás viendo.

Cómo leer cookies usando PHP

Para leer una cookie en un script PHP contamos con una variable super global llamada $_COOKIE.

En esta variable encontrarás un arreglo que contendrá un elemento por cada cookie enviada por el cliente, junto con su valor.

En el caso anterior podrías leer la cookie usando:

$mailmunch_second_pageview = $_COOKIE['mailmunch_second_pageview'];

Y usar el valor para lo que necesites.

Cómo escribir cookies usando PHP

Obviamente, sólo con leer cookies no alcanza… después de todo, de alguna forma deben haber aparecido esas cookies en el cliente…

La función que se utiliza para escribir cookies es setcookie.

Y aquí es donde empieza a tomar sentido toda la explicación que te daba al comienzo 🙂

La función setcookie no puede ser invocada en cualquier momento.

Es decir, puede, pero en ciertas circunstancias va a dar un error y no generará ninguna cookie en el cliente.

El punto es que la cookie la escribe el navegador en su disco local pero, para que lo haga, el servidor debe enviarle una orden.

Esa orden se transmite… a través de un encabezado HTTP y estos encabezados se envían antes de la respuesta como tal.

Esto significa, dicho en criollo, que una vez que hayas enviado contenido al cliente (HTML, js, css, etc…) ya es tarde para enviar encabezados.

De modo que, si necesitas escribir una cookie, debes hacerlo antes de emitir ningún resultado al cliente.

Esta misma limitación la tienen las funciones header y session_start por la misma razón.

mchojrin

Por mchojrin

Ayudo a desarrolladores PHP a acceder mercados y clientes más sofisticados y exigentes

1 comentario

¿Te quedó alguna duda? Publica aca tu pregunta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.