Ciao Edonista =)

Personalmente i controlli li faccio proprio all'interno della pagina logincheck.php che contiene il seguente codice php.

Codice PHP:
<?php
  
//se è già presente il valore user in sessione significa che sei già loggato
  
if(isset($_SESSION["user"])){
    print(
"Hai già effettuato il login!");
  }
  else{
    
//se è stato premuto il pulsante di invio del form nella pagina login.php
    
if(isset($_POST["bAccedi"])){
    
//verifico se sono stati completati entrambi i campi
    
if(($_POST["tbUsername"] != "") && ($_POST["tbPassword"] != "")){
    
//includo il file con le impostazioni del database
    
include("../db.inc");

    
//effettuo la mia select                                
    
$sql "select * from tabella where username='".
    
$_POST["tbUsername"] ."' and password='"$_POST["tbPassword"]."'";
    
//var_dump($sql);
    
$result $db->query($sql);

    
//se restituisce un risultato allora lo salvo sul db
    
if($db->affected_rows == 1){
      
$row $result->fetch_assoc();
      
$_SESSION["user"] = $row["username"];
      
$result->free_result();
    }
    else{
      print(
"Non è stata trovata alcuna corrispondenza!");
   }
 }
  
//nel caso in cui non fossero stati compilati tutti i campi
  
else{
    print(
"Non hai inserito tutti i valori necessari!");
  }
}
}
?>
Ovviamente questo è solo un esempio, che puoi farcire con tutti i controlli sull'integrità dei dati che vengono immessi.

Quello che però non si può fare da una pagina simile è effettuare il redirect dopo aver visualizzato i messaggi in quanto vi è già un output.

Spero di essere stato un pochino d'aiuto

Saluti!