lunes, 12 de diciembre de 2011

Chequear si se ha iniciado una sesión en PHP

Para iniciar una sesión en PHP, utilizamos la función session_start(), sin embargo, una práctica común (no necesariamente buena siempre) es forzar a que las sesiones se inicien automáticamente, modificando el archivo de configuración php.ini, especificamente haciendo session.auto_start = 1.

Bueno, el problema es que si ejecutamos session_start() y ya se encuentra una sesión activa (porque hayamos invocado anteriormente session_start() o porque se inicien automáticamente por nuestro php.ini), a partir de la versión 4.3.3 de PHP, se imprimirá un horrible mensaje tipo Notice:


Notice: A session had already been started - ignoring session_start()


Lo correcto es que invoquemos session_start() sólo si es necesario. Para ello, utilizaremos la función session_id(), la cual devuelve una cadena correspondiente al id de la sesión actual o una cadena vacía si no hay una sesión iniciado. Un posible uso sería:

<?php
if (strlen(session_id()) < 1)

  session_start();
?>



1 comentario:

División de Informática Educativa dijo...

Buenos días. Muchas gracias. Me ayudó a resolver un problema.