Beh... per il fatto che i file possano essere danneggiati, non saprei cosa dirti, ma per la tua altra questione il discorso è piuttosto semplice.

La variabile $path manca del nome del file stesso.

Ti riscrivo il codice aggiungendo un header che secondo me è una gentile cortesia al tuo utente.

Codice PHP:
if ($Codici==true) {

$nomefile $row['NomeFile']; 
$path "/dowload".$nomefile
$mime $row['TipoFile']; // suppongo che al momento dell'upload del file tu abbia salvato nel DB i ltipo

header("Content-type: $mime"); 
header("Content-Disposition: attachment; filename=$nomefile"); 
header("Content-Lenght: ". @filesize($path))
readfile($path); 

echo 
"<center>[b]Download eseguito correttamente![/b]</center>"

} else { 
// messaggio di errore
echo "<center>[b]Codici errati! 

 
<a href=\"java-script:history.back()\">Indietro</a>[/b][/b]</center>"