Efectivamente la solución es un único archivo de login donde se haga un switch del perfil de usuario. La session no debería abrirse hasta haber comprobado todo. Tampoco necesitas anidas las selects, una solución sería:
Código PHP:
<?php
$con = mysql_connect("server","user","pass") or die('Could not connect: ' . mysql_error());
$db = mysql_select_db("db_name", $con) or die('Could not select db: ' . mysql_error());
$result = mysql_query("SELECT count(*) AS cuenta, usr_id, username, nombre, apellido1, apellido2, tipo_perfil_id FROM usuario
WHERE username='$_POST[usuario]'
and password = '".md5($_POST["clv"]."';") or die('Could not query: ' . mysql_error());
while($row = mysql_fetch_assoc($result))
{
if ($row['cuenta']==1){//Si sólo ha encontrado una cuenta
switch($row['tipo_perfil_id']){
case 1:
$redir = "../index1.html?usr=" . $row['usr_id'] . "&tp=" . $row['tipo_perfil_id'];
break;
case 2:
$redir = "../index2.html?usr=" . $row['usr_id'] . "&tp=" . $row['tipo_perfil_id'];
break;
default:
echo "Perfil incorrecto";
break;
}
session_start("autentificado", "usuario", "nombre", "apellido1");
$_SESSION["autentificado"]= "SI";
$_SESSION["usuario"] = $_POST["usuario"];
header("Location: $redir");
} else {
echo "<br><br><br><br><br><br><br><br><br><br><br>";
echo "<table border='0' align='center'>
<tr>
<th><h1> Su usuario no ha sido aceptado*" . $_POST["usuario"] . "*</h1></th>
</tr>
<tr>
<th> <A href='aviso.html'> Intentar nuevamente </A>
</tr></table>";
}
}
mysql_close($con);
?>