lunes, 3 de agosto de 2009

PHP y los problemas con la sesión

PHP tiene un problema (depende de si se lo considera como tal) con las sesiones cuando se acceden a subdominios del sitio actual.

Hoy particularmente me sucedió que tenía un sitio http://femisaluddigital.net.uy el cual corre con el componente Yupp Portal. En una página del portal había un link a otra página pero el dominio del link era a http://www.femisaluddigital.net.uy/...., notar el WWW adelante.

Entonces, cuando si usuario está logueado en el sitio http://femisaluddigital.net.uy e intenta acceder al link que empieza con www la sesión se pierde y el usuario aparece como no logueado, con los problemas que esto trae (el usuario debe volver a loguearse).

Entonces las opciones serían:
  • Que los links a páginas locales se armen dinámicamente considerando la URL actual (viendo si tiene o no www al principio).
  • Guardar la sesión en la base de datos y que tanto para el dominio que empieza con www como para el que no tiene www, la sesión se acceda de la misma forma.
Hay que tener cuidado que para otro subdominio que no sea www (por ejemplo subdominio.femisaluddigital.ney.uy) tal vez quiera acceder a otra sesión, no a la misma del dominio principal. Esto puede ser un problema y el proceso de guardar y pedir información de la sesión debería ser lo suficientemente inteligente como para distinguir casos, nada muy complicado.

Con este post espero ayudar a otros que tengan el mismo problema. Hay algunos comentarios sobre el tema en la página de documentación de PHP sobre las sesiones, donde también indica que ante un cambio de protocolo (HTTP a HTTPS) la sesión también es eliminada. http://us2.php.net/manual/en/book.session.php