1) prima di fare questo
list($width, $height, $type, $attr) = getimagesize($_FILES['image']['tmp_name']);
devi assicurarti che si tratti di una img. La cosa non sempre semplicissima dato il comportamento anomalo su alcuni browser di $_FILES['image']['type'] e pertanto io preferisco verificare l'estensione
$ext = end(explode('.', $_FILES['image']['name']));
e poi verificare che sia un'estensione consentita.
2) per evitare il problema della sovrascrittura
- non è sufficiente una stringa random (si potrebbe cmq verificare che venga generata 2 volte la stessa stringa) ma deve essere anche univoca. Io faccio:
$new_name = time().$ext;
Oppure puoi utilizzare una delle millemila classi presenti sul web per fare l'upload