Cita: Hasta ahi todo bien, el problema es que si un visitante no tiene las cookies activadas, cuando va a otra seccion de la web de desloguea
Y por lo que tengo entendido, las sesiones no necesitan cookies para funcionar.
No, .. es un "mito" que las sesiones no usen cookies. Esto depende directamente de como propagues el SID. Tanto de tu aplicación (si lo haces manualmente o no) o dejas que PHP lo haga por tí en su configuración.
Por cierto todo esto es un "mito" por qué la gente no LEE la documentación oficial de Sesiones de PHP y esto va de "boca en boca".
Dentro de la configuración de propagación del SID, puedes hacerlo por dos métodos:
a) Cookies
b) URL
ambos métodos tienen sus prós y contras .. Por ejemplo usar cookies para propagar el SID da seguridad (puedes leer este documento:
http://www.acros.si/papers/session_fixation.pdf) vs a que si tu usuario no acepta cookies .. no podrá usar sesiones. Ahora, la pregunta es ¿por qué un usuario no va aceptar una cookie de un sitio o aplicación como la tuya "confiable"? .. Si uno bloquea "cookies" no puede ser que lo haga indiscriminadamente .. hay que -saber- quien te pide crear esa cookie como para aceptarla o NO ..
Tu en tu aplicación ya explicaras a tus usuarios los beneficios de seguridad de aceptar dicha cookie y avisar de este hecho.
Propagar el SID en el URL te proporciona independencia de si el usuairo acepta cookies o no .. pero NO seguridad. Además que el SID lo tendrás que propagar manualmente (a código) en tu aplicación en ciertos casos: redireccionamientos tipo header() .. o por javascript .. por poner unos casos. (links y formularios puedes dejar que PHP incrustre el SID en el automáticamente: session.use_trans_sid a ON ..)
Les recomiendo:
www.php.net/session
Un saludo,