Beh per forza te lo pubblica lo stesso, i vari blocchi IF con cui effettui i controlli sono slegati tra loro, e sono separati dall'istruzione che copia il file. Il risultato e' che i controlli vengono effettuati, ma non bloccano la copia del file. Prova cosi':
codice:<? $dir = "dir"; if ($file != "") { $ext = strrchr($file_name,'.'); if (($extlimit == "yes") && (!in_array($ext,$limitedext))) { $msg = "Il file che stai pubblicando non ha un'estensione corretta."; } else if (file_exists("$absolute_path/$file_name")) { $msg = "C'è già un file con lo stesso nome"; } else if (($sizelimit == "yes") && ($file_size > $sizebytes)) { $msg = "Il file è troppo grande. Deve essere di $sizebytes bytes o meno."; } else @copy($file, "$absolute_path/$file_name") or die("Il file che stai pubblicando non può essere copiato sul server"); } else { $msg = "Devi selezionare un file da pubblicare"; } ?>

Rispondi quotando