Archief - PHP: uniqid voor filenames

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

SuPeRfLy

Legacy Member
Hey,
Ik sla alle geuploade afbeeldingen op met een unieke bestandsnaam. Gebruik makend van de uniqid functie van php. Nu vroeg ik me af om het mogelijk is dat uniqid 2 keer hetzelfde bestandnaam genereert een en dezelfde host? En of het dus bijgevolg nodig is om de optie true toe te voegen aan de uniqid functie.
Mijn bestandnaam wordt gegenereert als volgt:
PHP:
$filename = uniqid("")."_1".".".$extention;
resulterend in een bestandsnaam gelijkaardig aan de onderstaande:
44d3cdbd2743a_1.jpg

Tyfius

Legacy Member
With an empty prefix, the returned string will be 13 characters long. If more_entropy is TRUE, it will be 23 characters.
Hoe meer characters, hoe groter de kans dat iets uniek is.
Maar volgens mij ga je met 13 characters al een eindje toekomen hoor...

Radiance

Legacy Member
Tjah de combinaties die je daarmee kan maken zijn eindig dus ooit zal het wel een 2e keer dezelfde bestandsnaam maken, k zou er mij ni teveel zorgen over maken.
Uniqid dient echter meer voor het doorgeven van session ID's en dergelijke, om dus een onvoorspelbare tekenreeks te generen.

Je zou er ook voor kunnen kiezen om bestanden te nummeren, dan kan je gewoon oplopende nummers gebruiken.

Jellepunk

Legacy Member
je kan de unique id combineren met de bestands naam. Ik gebruik een eigen random generator en daarna voeg ik de naam toe
PHP:
$obj	= new Random(5);
$random	= $obj->randomgenerator();
$verplaats = move_uploaded_file($temp, $mapNaam.$random.'-'.$naam);

Tyfius

Legacy Member
Ik maak mijn unieke bestandsnamen eigelijk allemaal via een unix timestamp. Op die manier ben ik nog wel zoet tot 2038 alvorens dat zou haperen :)

Jellepunk

Legacy Member
Tyfius zei:
Ik maak mijn unieke bestandsnamen eigelijk allemaal via een unix timestamp. Op die manier ben ik nog wel zoet tot 2038 alvorens dat zou haperen :)

hehe :p, nja, als je de naam ook behoud kan je makkelijk een alt tag maken die toch een beetje relevant is, zo blijft je site strict

killgore

Legacy Member
Alles hangt af van het achterliggende algoritme & de input daarvan (in dit geval msec).

Daarom dat er ook staat dat als je entropy op true zet dat het ZOU moeten meer uniek zijn, dit is dus niet noodzakelijk zo (maar hoogstwrsch wel).

Ik link dergelijke zaken meestal aan een db en gebruik de incremental id daarvan :).

Ma gewoon een do-while zou moeten volstaan:

PHP:
do
{
$filename = uniqid("")."_1".".".$extention; 
} while(file_exists($filename))

icerulez

Legacy Member
gewoon den UNIX time eraan toevoegen, tenzij je meerdere files tegelijk renamed. je kan je huidige functie ook gewoon in een loop steken die de lus pas verlaat als hij een filename gegenereerd heeft die nog niet bestaat op je server.


edit: zoals hierboven dus.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan