Yo empezaría por ver más sobre sesiones.
El uso que haces de las variables de sesión con session_register() ya de por sí es inseguro y se abandonó su uso (pese que aun puedes usarlo) desde la versión de PHP 4.1.0 donde apareció los arrays superglobales $_SESSION (y sus afines para otros métodos como $_GET, $_POST .. etc). En las FAQ's de este foro tienes ejemplos.
Otro detalle que se vé a simple vista ..
Haces esto ..
if($intento > 3)
{
header("Location:
http://127.0.0.1");
}
// más código PHP suceptible a ser ejecutado ..
Cuando usas header() con un "Location" .. PHP le dice al navegador que cambie la página que está viendo .. pero para llegar a ese punto .. tu script se ha ejecutado por completo, siendo que NO es así lo que realmente quieres sino que; "el navegador" cambie su página y llame a otro script tuyo/pagina (redireccione) y que tu script (PHP código) pare ahí mismo la ejecución ..
Para solventar eso .. usa exit; a continuación de un header("Location: ....");
Código PHP:
if($intento > 3)
{
header("Location: [url]http://127.0.0.1[/url]");
exit;
}
El tema de como propagas el SID en la sesión .. deberías ver conocer que estás asumiendo que PHP lo va hacer de forma automatica (session.use_trans_sid).
Y recuerda usar los arrays superglobales $_GET .. $_POST en lugar de asumir las variables como globales .. Por ahí ya tienes un problema con la seguridad ..
Luego habría que ver la lógica en sí y probar las condiciones posibles para ver si "falla" la autentificación.
Un saludo,