Hvis du smider det i en database er id'et vel i sig selv måske også nok? Du kan få id'et, umiddelbart efter indsættelse ved at bruge mysql_insert_id();
Du kan så f.eks. få navnet: $filnavn = mysql_insert_id().".jpg";
Funktionen behøves ikke at køre over en database, faktisk vil jeg gerne undgå det - det fik jeg måske ikke udtrykt godt nok. Eller er det bare nemmere gennem en db?
Altså databasen vil med auto_increment altid lave et nyt nummer. Så hvis du bruger jaw's løsning, hvor du først sætter noget i db, og derefter navngiver filen.
jaw: to filer på samme tid? Jeg ved hvad du mener, men rent teknisk kan 2 forskellige filer med 2 forskellige tidspunkter jo godt genere samme md5 sum.
Ja, det kan det godt! :o) Hvis vi tager et meget simpelt eksempel: Vi siger md5 returner checksum a-z, eller 0-9! Altså har vi 36 muligheder. Laver vi 37 filer, vil der kun være 36 mulige checksumme! Ergo må en af dem være ens! Det er jo lige så med md5, omend chancen er MEGET lille!
Jeg vil nu nok mene at det er sikrest at tage auto_increment id'et fra databasen. Der er du 100% sikker på at navnene aldrig vil overlappe.
Ang. md5(time()): På et velbesøgt site kan du vel godt risikere at to personer uploader hver deres billede indenfor samme sekund, og så har du et problem.. :) Der er ingen grund til at introducere race conditions hvis det kan undgås.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.