Prima di tutto avrei escluso direttamente di controllare l'estensione, controllare il mime-type è la soluzione più sicura.
Il mime-type puoi trovarlo in $_FILES['nome']['type']
Codice PHP:
$ok = array('image/png'); // e così via per tutti i mime-types
if(in_array($_FILES['nome']['type'], $ok)) {
// upload
} else {
// estensione non valida
}
E comunque non è necessario salvare il file se subito dopo lo si vuole cancellare perchè come ho già detto in tmp_name c'è il percorso del file e si possono svolegere le stesse operazioni:
Codice PHP:
//move_uploaded_file($_FILES["img"]["tmp_name"],getcwd()."/".$_FILES["img"]["name"]);
// altro codice php etc...
$file = file_get_contents($_FILES["img"]["tmp_name"]);
echo $file;
// altro codice php etc...
// unlink($_FILES["img"]["name"]);
P.S. @sevenjeak: usa preg_* per le espressioni regolari, ereg(i)_* ormai è deprecata.
Volendo seguire la tua soluzione (anche sapendo al rischio che si incorre):
Codice PHP:
if(preg_match('#\.(png|bmp|jpg)$#i', $tmp_name))
Oltre alla funzione deprecata, la sintassi è scorretta perchè hai eseguito l'operatore di bitwise OR tra le stringe ('...') | ('...')