2017-12-02 10 views
0

Wie generieren Sie zufällige Namen für Dateien in php7? random_bytes Wir geben Symbole zurück wie _шИ ¶.png Welche andere Funktion kann ich verwenden?Zufällige Namen für Dateien in PHP 7

Edit: Ich denke, ich könnte uniqueid() verwenden, aber ist es nicht ein bisschen alt?

+3

Nichts ist falsch mit uniqid(). Es ist nicht veraltet oder so. Man könnte auch sagen, dass echo zu alt ist. –

+2

Obwohl, wrt uniqid - "Diese Funktion erstellt keine zufällige oder unvorhersehbare Zeichenfolge. Diese Funktion darf nicht für Sicherheitszwecke verwendet werden." - https://stackoverflow.com/questions/4070110/how-unique-is-uniqid Also * die Anforderungen für "random" * sollte verwendet werden, um eine Lösung auszuwählen .. – user2864740

Antwort

1

Sie können die Ausgabe von random_bytes ändern, um sie auf den druckbaren Zeichenbereich zu beschränken.

Beispiel:

// Ascii 126=~, 32=[space], so the lower ASCII printable block 
define('RANDOMIZVI_RANGE_DEFAULT', 126-32); 

function randomizvi(int $length, $range = RANDOMIZVI_RANGE_DEFAULT){ 
    $bytes = random_bytes($length); 
    for($i = 0;$i < $length;$i++){ 
     $bytes[$i] = chr((ord($bytes[$i]) % $range) + 32); 
    } 
    return $bytes; 
} 

Es ist eine Art einer rohen Lösung, aber es funktioniert. Beachten Sie, dass diese bestimmte Implementierung leicht auf bestimmte Zeichen ausgerichtet ist.

Wenn Sie nicht unbedingt zufällige Dateinamen benötigen, ist es möglicherweise einfacher, sie einfach zu nummerieren, wodurch Kollisionsgefahren vermieden werden.