Sesiones vs cookies cual usar

A la hora de hacer aplicaciones Web a medida con PHP que requieran disponer de una parte privada donde los usuarios puedan interactuar con sus datos podemos hacer uso de dos elementos: las sesiones y las cookies.

En  este artículo vamos a comparar el uso de las sesiones y las cookies haciendo referencia a un sistema de login de usuarios.

Las sesiones y las cookies son variables globales que se usan para el almacenamiento de datos que se pueden consultar fácilmente mientras se navega dentro de un sitio.

En mis inicios en la programación siempre utilizaba las sesiones por el simple hecho de que fue lo primero que conocí y parecía que su uso era más simple para conseguir prácticamente el mismo objetivo pero resulta que con el tiempo me di cuenta de que no era así. Existen unas diferencias importantes que todo programador debería conocer para decir cual usar en cada caso.

Lo más importante es saber que las cookies se almacenan a nivel local en el navegador del usuario y las sesiones almacenan los datos directamente en el servidor Web.

Las sesiones pueden almacenar grandes cantidades de datos fácilmente en el servidor Web. Esto hace que las sesiones sean más seguras debido a que los datos no pueden ser vistos o editados por el cliente.

Crear una sesión es muy sencillo. Tan solo debes hacer la llamada a la siguiente función al principio de todas las páginas de tu proyecto:

Esta función inicia una nueva sesión o reanuda una existente.

Crear variables de sesión es tan simple como se puede observar en el siguiente ejemplo:

$_SESSION['id_customer'] = $_POST['id_customer'];

Para eliminar datos de una sesión podemos emplear la función unset():

unset($_SESSION['id_customer']);

Y para cerrar una sesión podemos emplear la función session_destroy():

Como puedes observar son muy simples de implementar pero tiene un inconveniente bastante importante a la hora de implementar los inicios de sesión de usuarios. Cuando se cierra el navegador finaliza la sesión de usuario. Este inconveniente lo podemos cubrir con el uso de las cookies.

Las cookies son más duraderas y aunque cerremos el navegador ellas seguirán ahí y al día siguiente podrían estar disponibles si no ha expirado el tiempo de sesión. Esto las hace más atractivas y útiles para recordar los inicios de sesión de usuario.

Como todo, las cookies también tienen desventajas. Una de ellas es que se almacenan en archivos dentro del ordenador de los usuarios. Esto significa que el usuario puede manipularlas. Se debe tener especial cuidado con la información que se guarda.

Las cookies no pueden almacenar tanta información como las sesiones pero para los inicios de sesión no se requiere guardar mucha información por tanto ya son más que válidas.

Para crear una cookie podemos emplear la función setcookie() de la siguiente forma:

setcookie('id_customer', $_POST['id_customer'], time() + 3600);

Con esta llamada estamos enviando una cookie que expirará en 1 hora con la información que hay dentro de la variable $_POST[‘id_customer’]. Como dijimos al principio es muy útil para los inicios de sesión.

Un detalle que podemos hacer con las cookies y con las sesiones no, es mantener la sesión durante días. Fíjate en el siguiente código:

if (!empty($_POST["stay_logged_in"])) 
    $session_time = time()+31622400;
else 
    $session_time = time()+3600;
 
setcookie('id_customer', $_POST['id_customer'], $session_time);

Si el usuario checkea el campo “mantener la sesión” creamos una cookie con un tiempo más elevado. En este caso de unos 8 días. En caso contrario creamos una cookie de 1 hora.

Si queremos programar un enlace o botón de cerrar sesión. Tan solo tendremos que controlarlo de la siguiente forma:

if (isset($_POST['close_session'])) {
    setcookie('id_customer');
}

Los datos de la cookie los puedes leer fácilmente con la variable global $_COOKIE. Lo ideal es guardar en ella la información necesaria para obtener más información en la base de datos sobre el usuario. Un ejemplo claro el id usuario o un clave secreta o token del usuario.

echo $_COOKIE['id_customer'];

Puedes ver más información sobre cómo establecer una cookie en: http://php.net/manual/es/function.setcookie.php

Como conclusión a todo esto si necesitas hacer un inicio de sesión con todas sus posibilidades te recomiendo que utilices las cookies debido a que tendrás más posibilidades sobre todo si necesita mantener la sesión varios días. Las sesiones también se pueden utilizar si no te interesa usar la funcionalidad de mantener la sesión. En tu proyecto también puedes usar ambas opciones.

Si te ha servido este tutorial hazte fan de la página de facebook del blog Jose Aguilar y estate al tanto de nuestra novedades.

No acabas de saber implementar tu sistema de login y necesitas ayuda. Contrata un profesional que te lo haga

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (2 votos, promedio: 5,00 de 5)
Cargando…

Comparte en las redes sociales

Escrito por Jose Aguilar - Experto programador Prestashop y Wordpress.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*