Assegnare ad una immagine un nome col metodo random

Salve, volevo chiedervi un consiglio, ho creato una pagina dove inserisco delle foto mediante un form. Il nome per ogni immagine che invio al server è generato dalla funzione rand() che poi va a riempire un campo nella tabella dove indico i percorsi della immagine. Ora il dubbio mio è che se le immagini da caricare diventano tante può capitare che quella che carico per ultima abbia lo stesso nome di una già esistente e quindi possa sostituire un'altra invece di aggiungersi. Secondo voi è un rischio ? C'è un altro metodo migliore per evitare ciò e dare ad una immagine un nome univoco ?

inviato 4 anni fa
MGbyte78
X 0 X

E' sicuramente un rischio che puo' capitare. Il mio consiglio e' quello di utilizzare la funzione uniqid per ovviare a questo problema! ;)

risposto 4 anni fa
JellyBelly
Questa funzione mi restituisce una stringa alfanumerica, non può capitare che ne esca fuori un doppione in futuro?MGbyte78 4 anni fa
impossibile perche' da come puoi leggere nella documentazione genera un identificativo basato sul timestamp in millisecondi! ;)JellyBelly 4 anni fa
X 0 X

PHP possiede una funzione che genera in maniera casuale il nume di un file ed assicura che nella cartella di destinazione non avvengano collisioni.

Questa funzione è tempnam.

$nome_file = tempnam("/cartella/di/destinazione/", "eventuale_prefisso");
risposto 4 anni fa
Gianni Tomasicchio
Si ma la funzione tempnam apre una connessione ftp? Io ho bisogno solo che mi dia un nome univoco poi la gestione e il trasferimento me la fa il file thumbnail.class.php che mi genera anche le anteprime. che ne dite di questa ? md5(uniqid(microtime(), true));MGbyte78 4 anni fa
@MGbyte78 perché parli di connessione FTP? Il tutto avviene su filesystem locale. Provala e vedrai che fa al caso tuo. Guarda anche l'esempio della documentazione ufficiale per capire come scrivere nel file creato dalla funzione.Gianni Tomasicchio 4 anni fa
Ho visto l'esempio ma non riesco ad implementarlo nello script che uso che è il seguente, tuttavia ho risolto forse con funzione che ho inserito dentro la variabile $prefix (ovvero con uniqid), che dici? Comunque anche se dovesse andar bene se per te non è un problema mi spiegheresti come implementare la funzione che mi hai suggerito con lo script che uso?  require_once 'thumbnail.class.php';    $thumbnail = new thumbnail;     if (!empty($_REQUEST['submit']))   {       $rand=rand();    $tmp = $_FILES['uploaded_file']['tmp_name'];    $org = $_FILES['uploaded_file']['name'];          if ($tmp)    {     $directory = 'images/Outlet';      $prefix = md5(uniqid(microtime(), true));             // Upload all image files     $lrgImage = $thumbnail->generate($tmp, $org, $directory, $prefix.'lrg', 700); // large file     $medImage = $thumbnail->generate($tmp, $org, $directory, $prefix.'med', 245); // medium file     $smlImage = $thumbnail->generate($tmp, $org, $directory, $prefix.'sml', 100); // small file .............MGbyte78 4 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda