Si está almacenando la sesión en la base de datos, agregue un mecanismo mediante el cual el ID de usuario se almacene como parte del registro de sesión de su base de datos, creando lo que me gusta llamar una "sesión semántica". Cuando el usuario inicie sesión, verifique si ya existe otra sesión; si es así, use session_id()
para fijar la nueva sesión a la ID de la sesión anterior, que se unirá a ellos (y debería cambiar la ID de su nueva sesión para todas las solicitudes posteriores). Asegúrese de realizar esta acción solo durante el paso de inicio de sesión, o podría terminar con condiciones de carrera extrañas de dos sesiones tratando de ser el uno para el otro e "intercambiando".