A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

15.1. Sesiones de PHP

Primero vamos a dar algo de teoría sobre lo que son las sesiones PHP. En PHP las sesiones trabajan de la siguiente manera:

49) Una cookie HTTP es una pequeña pieza de información enviada desde el sitio web y almacenada en el navegador web del usuario mientras el usuario esta navegando. Las cookies se usan para recordar estados entre peticiones HTTP.

Desde el punto de vista del desarrollador de la aplicación el trabajo con sesiones es simple. Primero se inicializa la sesión llamando a la función de PHP session_start(). Luego, se usa el arreglo super-global $_SESSION para colocar o recuperar la información de sesión. Por ejemplo, para guardar alguna información de sesión se usa el siguiente comando:

session_start();
$_SESSION['my_var'] = 'Some data';

Luego recuperamos la información de sesión, con el siguiente código:

session_start();
if (isset($_SESSION['my_var']))
    $sessionVar = $_SESSION['my_var'];
else
    $sessionVar = 'Some default value';

Para limpiar la información, usamos la función de PHP unset(), de la siguiente manera:

unset($_SESSION['my_var']);

Advierta que las sesiones no duran para siempre (ellas expiran tarde o temprano, o cuando la cookie del usuario expira o cuando el motor PHP limpia los archivos de sesión guardados). El tiempo que dura la sesión se define en el archivo de configuración php.ini. Es posible sobreescribir el parámetro de expiración por defecto con la ayuda de la función ini_set(), de la siguiente manera:

// Set session cookie lifetime (in seconds) to be 1 hour.
ini_set('session.cookie_lifetime', 60*60*1);

// Store session data on server for maximum 1 month.
ini_set('session.gc_maxlifetime', 60*60*24*30);

Hay varias otras configuraciones avanzadas para las sesiones en el archivo php.ini. Nosotros no las tratamos aquí porque no son usualmente necesarias.

Pero si las sesiones PHP son tan simples, ¿por que necesitamos el envoltorio provisto por Zend Framework 3?

La envoltura para las sesiones de PHP provista por ZF3 es útil porque:

  • La envoltura de sesión de ZF3 es orientada a objetos, así podemos usarla consistentemente en nuestra aplicación MVC.
  • ZF3 provee el concepto de nombres de espacio de sesión, así diferentes modelos pueden almacenar información sin conflicto de nombres.
  • ZF3 provee características de seguridad (validadores de sesión), así es más difícil para los usuarios maliciosos conseguir y sustituir nuestra información de sesión.
  • Usar directamente el arreglo super-global $_SESSION no es bueno, porqué hace las pruebas de nuestro sitio web más difícil. Cuando usamos una envoltura para las sesiones PHP es más fácil ofrecer información de prueba.
  • Con las clases de sesión de ZF3 es posible implementar almacenamiento de datos de sesión personalizados (por ejemplo, almacenar datos de sesión en base de datos en lugar de archivos).

Top