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>";
}