PHP: JSON en una cookie

Las cookies son pequeños fragmentos de información que las páginas web envían al navegador  para recordar cierta información en el futuro. Se almacenan de forma local, es decir, cada usuario las almacena en un archivo de su máquina. Las cookies pueden contener información simple, como una cadena de texto, pero también pueden tener información compleja. Por ejemplo, imagine una tienda tipo ebay en las que se almacenan los últimos productos visitados y en función de ello, ofrecerte nuevas ofertas similaes a lo que has buscado. Sin duda, esto mejora la experiencia del usuario.

Este post trata de cómo almacenar información estructurada en una cookie para luego obtenerla fácilmente. Una de las mejores formas de intercambiar información estructurada en páginas web es el formato JSON. Este es un formato ligero, fácil de usar e interpretar que ha experimentado una gran crecimiento en los últimos tiempo. Existen parsers (intérpretes) en casi todos los lenguajes y PHP lo incluye de forma nativa desde la versión 5.2.

Almacenar información estructurada en una cookie es sencillo: crea una clase y define la estructura de variables:


class miClase {
public dato1 = "valor";
public dato2 = array("entrada");
}

Este clase será serializada y convertida a JSON mediante la función json_encode:


$resultado = json_encode(miClase);

La función devuelve una cadena de texto en formato JSON. Como restricción, esta función sólo trabaja con datos en formato UTF-8. Finalmente, para no tener problemas con algunos caracteres que no pueden aparecer en las cookies, aplicamos la función urlencode y tendremos el texto listo para almacenarlo en la cookie:


setcookie('nombreCookie', $resultado);

Cuando llega una petición web, la obtención de los parámetros de la cookie se realiza con los pasos anteriores de forma inversa:


$jsonString = urldecode($datosCookie);
$datos = json_decode($jsonString, true);

La variable $datosCookie contien los datos JSON almacenados anteriormente. Finalmente $datos contiene un array asociativo con los datos originales. Este array se obtiene debido a que hemos empleado el valor true en el segundo parámetro de la función json_decode. Si no se emplea este segundo parámetro,  json_decode devuelve un objeto.

Advertisement

Acerca de Víctor

Programador, deportista y bloguero.

Publicado el 29 octubre, 2011 en PHP y etiquetado en , , , , , , . Guarda el enlace permanente. Dejar un comentario.

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.