Estás agregando espacios manualmente alrededor de tu nombre de usuario para que parezca que no existe:
$query = "SELECT * from User WHERE username=' ".$username." ' ";
^ ^
Debería ser:
$query = "SELECT * from User WHERE username='".$username."' ";
El uso de una declaración preparada evitaría ese problema y los posibles problemas de inyección de sql de una sola vez:
$query = "SELECT * from User WHERE username=?";
También asegúrese de usar consistentemente los nombres de sus tablas y columnas:User
no es necesariamente lo mismo que user
.
Tenga en cuenta también que nunca debe almacenar contraseñas de texto sin formato en una base de datos, debe sal y triturarlas .