Revista Informática

PHP desde Cero: Cookies & Sessions

Publicado el 08 octubre 2013 por Codehero @codeheroblog

Las Cookies se almacenan en el disco duro del usuario que visita el sitio web, estas solo pueden ser accedidas por los dominios que el creador declare. Pueden permanecer un gran tiempo almacenadas, incluso hasta después que dejas el sitio. Estas tienen un tamaño limitado de espacio, por lo cual solo sirven para datos específicos.

Las Sessions se almacenan en el servidor, esto quiere decir que no son visibles por otros sitios web. Tampoco tienen un máximo de tamaño y se puede almacenar data sensible de manera segura, ya que no se transmiten al usuario como lo hacen las Cookies.


Cookies

Las Cookies proveen un mecanismo que permite guardar pequeñas cantidad de información. Esto permite mantener configuración que el usuario usa en el sitio web como colores de fondo, opciones de ordenamiento o nombres que ya han ingresado y no desean volver a ingresar cada vez que accedan.

Antes de implementar las Cookies hay que tener en cuenta que el usuario las puede deshabilitar, por lo tanto no es recomendable hacer un sitio web que dependa de esto para funcionar.

Estructura

Los datos en una Cookie se almacenan con la estructura de nombre/valor. Por ejemplo, si queremos almacenar el nombre de un usuario usaríamos usuario=Pedro. Una Cookie también contiene información adicional como la fecha de expiración y el dominio.

usuario=Pedro; expires=FechaConFormato; domain=dominio.com

1 usuario=Pedro;expires=FechaConFormato;domain=dominiocom

Nombre/Valor

La primera parte de una Cookie define el nombre y el valor que esta almacena. Por ejemplo, si queremos guardar el tipo de moneda que el usuario desea ver moneda=USD. Este es el único parámetro obligatorio, todos los demás son opcionales y se colocan dependiendo de las necesidades.

Fecha de Expiración

Este parámetro opcional (expires=) especifica la fecha hasta la cual se debe guardar la Cookie. Normalmente se utiliza la función time() para establecer el valor de esta fecha.

Ruta

El parámetro (path=) permite establecer los directorios del sitio web en donde se puede utilizar la Cookie. Si se coloca ‘/’, entonces se podrá hacer uso de la Cookie desde todo el sitio web. Por defecto solo esta disponible la carpeta desde la cual se esta declarando y sus subcarpetas.

Dominio

En este parámetro(domain=) se especifica el dominio o subdominio que donde esta disponible la Cookie.

Seguridad

Este parámetro (secure=) determina si la Cookie solo se puede enviar a través de una conexión segura con HTTPS.

Crear una Cookie

Las Cookies se crean utilizando la función setcookie(). Los argumentos que esta función acepta son para establecer los parámetros que explicamos anteriormente, empezando por el nombre de la Cookie y su valor. Veamos un ejemplo de como se crea una Cookie:

setcookie('nombreUsuario', 'Pedro', time() + 4800);

1 setcookie('nombreUsuario','Pedro',time()+4800);

Esta función crea una Cookie en la computadora de quien abra la página(asumiendo que tiene las Cookie habilitadas), la cual se llama nombreUsuario, contiene el valor Pedro y expira (se mantiene activa) 4800 segundos después de su creación.

Leer una Cookie

Como los explicamos anteriormente, las Cookies se almacenan en el disco duro del usuario y cuando se hace una petición a la pagina donde se creo estas son enviadas al servidor. PHP guarda las Cokies en un arreglo global asociativo con el nombre de $_COOKIE, veamos un ejemplo de como acceder a la Cookie nombreUsuario:

if (isset($_COOKIE['nombreUsuario'])){ echo 'Valor de la Cookie '. $_COOKIE['nombreUsuario']; }else{ echo 'No hay Cookies'; }

12345 if(isset($_COOKIE['nombreUsuario'])){  echo'Valor de la Cookie '$_COOKIE['nombreUsuario'];}else{  echo'No hay Cookies';}

Borrar una Cookie

Para borrar una Cookie utilizamos la misma función que para crearla, pero con el parámetro de valor vacío y con el tiempo negativo.

setCookie('nombreUsuario', '', time() - 1000);

1 setCookie('nombreUsuario','',time()-1000);


Sessions

Las Sessions en PHP permiten que las páginas web puedan ser tratadas como un grupo, ya que podemos compartir variables en diferentes páginas. Una de las debilidades de las Cookies es que se guardan en la computadora del usuario y por lo tanto pueden ser modificadas, en cambio en las Sessions en PHP solo se guarda un Cookie ID para saber cual es el archivo Session del usuario en el servidor. De esta manera el usuario no tiene acceso a las Sessions, lo que la hace mas segura.

Crear una Session

Para crear una Session se debe utilizar la función session_start(), la cual obtiene la información que tenga almacenada del usuario y rellena el arreglo asociativo llamado $_SESSION. En comparación con las Cookies, las Sessions son mas sencillas de usar, ya que una vez que la iniciaste solo debes llenar o leer el arreglo $_SESSION.

session_start(); $_SESSION['nombre'] = 'Pedro'; $_SESSION['apellido'] = 'Garcia';

1234 session_start(); $_SESSION['nombre']='Pedro';$_SESSION['apellido']='Garcia';

Hemos iniciado una Session y declaro un nombre y un apellido en ella. Ahora esta información estará disponible en todas las paginas que el usuario visite y se inicie la Session.

Leer una Session

Para leer algún dato almacenado en Sessions se debe inicializar con session_start() y luego se accede al dato que se necesite.

session_start(); if (isset($_SESSION['nombre'])){ echo $_SESSION['nombre']; }else{ echo 'No existe nombre en $_SESSION'; }

1234567 session_start(); if(isset($_SESSION['nombre'])){  echo$_SESSION['nombre'];}else{  echo'No existe nombre en $_SESSION';}

Como podemos observar, el uso de las Sessions es muy sencillo en comparación a las Cookies.


Conclusión

En este capítulo hemos aprendido las principales características y diferencias entres las Cookies y las Sessions, como podemos ver cada una tiene sus propósitos. Escoger una u otra (o ambas) dependerá de las necesidades que se tengan a la hora de crear un sitio web, pero gracias a estas el sitio podrá ser mas dinámico. Cualquier duda o comentario estaré atento a la sección de comentarios.


Volver a la Portada de Logo Paperblog