Es mejor vea Ud que le conviene, el tema es un poco mas complejo de lo que recordaba (que pena!)
Considerandos:
1) Es cierto que podria provenir un id=0 de una base de datos aunque no es lo mas comun porque los id autoincrementales empiezan de 1
2) Siempre hay definido un id ($_SESSION['id']=0) en variables de session
En el siguiente codigo de pruebas que le prepare, si el ID=0 y fuera eso correcto (asi estuviera en la DB)..vea que pasa:
Cita: Ingreso con isset()
array (size=1)
'id' => int 0
Acceso denegado con !empty()
Código PHP:
<?php
session_start();
/*
Investigar:
caso 1) session : [undefined]
caso 2) session : id=0
caso 3) session : id>0
*/
$_SESSION['id']=0;
if (isset($_SESSION['id'])){
echo 'Ingreso con isset()';
var_dump($_SESSION);
}else
echo 'Acceso denegado con isset()';
if (!empty($_SESSION['id'])){
echo 'Ingreso con !empty()';
var_dump($_SESSION);
}else
echo 'Acceso denegado con !empty()';