io farei così

Codice PHP:
session_start(); //..avviamo la sessione...
//
//Controlliamo se tutti i campi sono compilati

if($_POST['username']== "" || $_POST['password'] == "" 
//Se alcuni campi non sono compilati...
{
  die(
"Alcuni campi non sono compilati"); //...terminiamo lo script e mandiamo un errore all'utente
}

//
//Recuperiamo i dati dal database e li controlliamo
//
//controllo che non siano stati usati dei caratteri speciali
//FONDAMENTALE PER EVITARE PROBLEMI CON QUALCHE FURBETTO!!
$username=mysql_escape_string($_POST['username']);
$password=mysql_escape_string($_POST['password']);

//Impostiamo la query...
$query "SELECT COUNT(*) n  FROM utenti WHERE username = '$username' AND password='$password' "
$risultato mysql_query($query//...e la eseguiamo
or die("Impossibile eseguire query.
"
.mysql_error()); //Oppure mandiamo il solito errore
$find mysql_fetch_assoc($risultato); //Fissiamo la riga

//se non c'è un utente con quei dati quindi login errata:
if ($find['n']==0)
{
  die(
"Username e/o password errati"); //..mandiamo l'errore e terminiamo lo script
}
else 
//Altrimenti...
{
  
$_SESSION['username'] = $username//...e salviamo i dati in essa  
  
$_SESSION['password'] = $password;
}
/* e poi va avanti.... */ 
mi raccomando il controllo su quello che viene inserito nel form di login per evitare attacchi sql injection !!!

prova a vedere cosa succede così...