La solución pasa por regenerar el ID de sesión si todaviá está en curso.
Una propuesta:
Cita: cbarnes at bfinity dot net
09-May-2005 09:44
Note that Firefox and Mozilla use the same process for launching new windows or tabs, they will pick up the same session id as the previous windows until the parent process dies or is closed. This may cause undesired results if the session id is stored in a db and checked, a solution is to check at the new entry point (new tab or window if the user went back to the index page) for an existing session. If a session id exists and a new one is required use something like:
Código PHP:
$ses_id = session_id();
$bsid_exists = false;
$bsid_exists = check_session_id_from_db($ses_id);
if ($bsid_exists){
//This is a reentry and the session already exists
// create a new session ID and start a new
session_regenerate_id();
$ses_id = session_id();
}
Esta función que menciona el código:
check_session_id_from_db($ses_id);
Se basa en que tu ingresarías cada sesión abierta por un "login" supuesto en una BBDD (tal vez asociado simplemente a un dato más del login del usuario) .. posteriormente en cada login que hagas .. chequeas ese ID en tu BBDD si existe para regenerarlo (session_regenerate_id())
Por mi parte estoy probando el tema ..
Un saludo,