¿Cómo saber si una sesión está activa?

Por solicitud, hay algunas formas diferentes en las que puede saber si se ha iniciado o no una sesión, como por ejemplo:

$isSessionActive = (session_id() != "");

O:

$isSessionActive = defined('SID');

Sin embargo, ambos fallan si inicia una sesión y luego la cierra;session_id() devolverá la identificación de la sesión anterior, mientrasSID será definido Del mismo modo, llamandosession_start() en este punto generará unE_NOTICE si ya tienes una sesión activa. ¿Hay alguna forma sensata de verificar si una sesión está actualmente activa, sin tener que recurrir al almacenamiento intermedio de salida, el operador de apagado (@session_start()), o algo más igual de hacky?

EDITAR: escribí un parche para tratar de incluir esta funcionalidad en PHP:http://bugs.php.net/bug.php?id=52982

EDITAR 29/08/2011: Nueva función agregada a PHP 5.4 para arreglar esto:"Exponer el estado de la sesión mediante una nueva función, session_status"

// as of 8/29/2011
$isSessionActive = (session_status() == PHP_SESSION_ACTIVE);

EDITAR 12/5/11:session_status () en el manual de PHP.

Respuestas a la pregunta(7)

Su respuesta a la pregunta