No digo que con javascript no funcione, de hecho yo en algunas ocasiones lo he realizado pero aquí me parece que debes tener en cuenta algo. Eso que haces de
Código PHP:
if (!$fila[0])
Esta mal enfocado. Yo lo que te sugiero es que hagas si ha dado algun tipo de dato la consulta, es decir:
http://php.net/manual/es/function.my...ected-rows.php
Con mysql affected rows puedes ver cuantas filas te da la consulta. En caso de no encontrar ni una dile que haga la redirección al principio y en caso contrario que inicie las variables de sesión y se vaya al principal.
La desventaja de usar javascript es que si alguien lo deshabilita podria crear un comportamiento no deseado.