Du lägger manuellt till mellanslag runt ditt användarnamn så att det ser ut som att det inte finns:
$query = "SELECT * from User WHERE username=' ".$username." ' ";
^ ^
Bör vara:
$query = "SELECT * from User WHERE username='".$username."' ";
Att använda ett förberett uttalande skulle undvika det problemet och potentiella sql-injektionsproblem på en gång:
$query = "SELECT * from User WHERE username=?";
Se också till att du konsekvent använder dina tabell- och kolumnnamn:User
är inte nödvändigtvis detsamma som user
.
Observera även att du aldrig ska lagra vanlig textlösenord i en databas bör du salta och hasha dem .