Cita: Bueno, después de un largo rato probando y probando con las cookies, ya parece que he encontrado una solución que funciona y parece tener sentido. Ruego me digáis si hay alguna incoherencia. Por ejemplo, me gustaría saber si es necesario que el nombre de la cookie sea igual al nombre de la sesión. O también ¿Hay que hacer la llamada a session_name(...) y session_start() en todos los momentos que yo la hago, o sobra alguna llamada? El código para autentificar usuarios es el siguiente (pongo el código completo)
No es necesario que tu generes una cookie para propagar el SID .. PHP ya implementa ese sistema por tí y lo gestiona perfectamente. Sólo debes "activarlo" si no lo usas actualmente. La configuración es la misma que te mencioné en mi mensaje anterior:
session.use_trans_sid = OFF
session.use_cookies = ON
session.use_only_cookies = ON
En el mismo php.ini tienes más directivas que ajustan las propiedades de las cookies que PHP generará en este caso y también puedes ajustarlas por otras funciones de PHP sobre sesiones (session_set_cookie_params() si no me equivoco).
De hecho .. en tu sistema generas una cookie .. OK, guardas un tiempo y lo codificas en MD5() .. Ok (una especie de "SID" propio que haces ahí) .. la cookie le das un tiempo de vida y lo primero que haces en tus validaciones es ver esa cookie si existe o no .. Pero, realmente el SID "va por otro lado" y así está funcionado ahora (propagando el SID). El problema principal que tiene lo que estás haciendo ahora es en cuanto a la duración en sí de los datos en la sesión; sigue mandando el tiempo que define session.gc_maxtimelife (la duración de la sesión físicamente en el servidor) y la duración de la cookie que PHP crea para propagar el SID.
Un saludo,