1- El primer error que veo es que está basado en códigos de algún editor, tal vez Dreamweaver, que no suele ser adecuado en las soluciones generadas.
2- Qué pasa si un usuario quiere usar apóstrofe en su contraseña?... algo como abc'123, si quitas ese caracter no incrementas la seguridad y lograrás que el usuario se vuelva loco cuando quiera ingresar al sitio, a menos que en el registro también lo hayas quitado... pero no es algo correcto, para eso existen funciones y métodos de escape de datos.
3- Estás usando mysql_*, que ya es una librería obsoleta, deberías migrar a mysqli_* o, mejor aún, a PDO
4- No es conveniente ser tan explícito con el usuario al decirle que el nombre ingresado no existe y, por separado, que la contraseña es incorrecta, es mejor "Nombre de usuario y/o contraseña incorrectos."
5- Estás guardando la contraseña sin encriptar?, es preferible encriptarla para evitar desastres.
6- Creas variables como $ID, $nombre, etc., que luego asignas a un array y, finalmente, a una variable de sesión; sería más fácil si usas
$_SESSION['mi_sesion'] = $fila; y después analizas los permisos para establecer
$_SESSION['General'] = 1;
Para ver algunas sugerencias de cómo solucionar algunos de esos problemas, pásate por:
http://www.forosdelweb.com/f18/aport...8/#post4265377
De hecho, es recomendable leer el tema completo, pero no tan necesario.