Autor | Zpráva | ||
---|---|---|---|
Enko Profil * |
#1 · Zasláno: 9. 6. 2012, 14:31:31
Ahoj,
jak řešíte přejmenování nahraného souboru přes webový formulář? Řeším to takto a zajímá mě případné jiné či lepší řešení. Díky <?php $micro = microtime(); $micro = explode(" ", $micro); $micro = $micro[0]; $micro = explode("0.",$micro); $micro = $micro[1]; //zjištění mikrosekund mb_internal_encoding('UTF-8'); //zajištění správného kódování pro fci mb_string() $micro = mb_substr($micro, 0, 6); //zkrácení o poslední 2 nuly, které tam jsou vždy $jmeno = md5(date("YmdHis").$micro); // zahešování jména souboru, aby nebylo na první pohled poznat, kdy to uživatel nahrál $koncovka = pathinfo($_FILES["image"]["name"], PATHINFO_EXTENSION); //zjištění koncovky nahrávaného souboru $photo = $jmeno.".".$koncovka; //výsledné jméno souboru ?> |
||
Jan Tvrdík Profil |
#2 · Zasláno: 9. 6. 2012, 14:39:47
Enko:
V čem je to lepší, než $jmeno = md5(uniqid()); |
||
Enko Profil * |
#3 · Zasláno: 9. 6. 2012, 14:43:50
Jan Tvrdík:
uniqid() mě nenapadlo, díky :) |
||
Darker Profil |
#4 · Zasláno: 9. 6. 2012, 14:43:51 · Upravil/a: Darker
Proč vůbec hashovat uniqid? Jinak ještě kontroluj, zda stejný soubor neexistuje - hash různých hodnot může být stejný. Pokud existuje, připoj za jméno číslo.
A pokud nahráváš obrázky asi bys měl omezit přípony jen na přípony obrázků. |
||
Enko Profil * |
#5 · Zasláno: 9. 6. 2012, 14:55:40
Darker:
„Proč vůbec hashovat uniqid?“ Pravda, odstraněno. „Jinak ještě kontroluj, zda stejný soubor neexistuje - hash různých hodnot může být stejný. Pokud existuje, připoj za jméno číslo“ Tuto kontrolu udělám. „A pokud nahráváš obrázky asi bys měl omezit přípony jen na přípony obrázků.“ Toto už mám ošetřené Nakonec jsemt o vyřešil takto: $jmeno = uniqid('',true); |
||
Darker Profil |
#6 · Zasláno: 9. 6. 2012, 16:23:46
Kontrola na existující soubor:
$jmeno = uniqid('',true); $pripona = /*zjisteni pripony*/; $cislo = 0; $tmpjmeno=$jmeno; while(file_exists("slozka/$tmpjmeno.$pripona")) { $tmpjmeno=$jmeno.$cislo; $cislo++; } |
||
Časová prodleva: 12 let
|
0