2017-12-02 10 views
0

어떻게 php7에있는 파일의 임의의 이름을 생성합니까? random_bytes 우리는 _шИ ¶.png과 같은 기호를 반환합니다. 다른 어떤 기능을 사용할 수 있습니까?PHP 7의 파일에 대한 임의의 이름

편집 : uniqueid()를 사용할 수 있지만 조금 오래되지 않았습니까?

+3

uniqid()를 사용할 때 아무런 문제가 없습니다. 더 이상 사용되지 않습니다. 'echo '가 너무 오래되었다고 말할 수도 있습니다. –

+2

비록, wrt uniqid - "이 함수는 임의적이거나 예측할 수없는 문자열을 생성하지 않습니다.이 함수는 보안 목적으로 사용하면 안됩니다." - https://stackoverflow.com/questions/4070110/how-unique-is-uniqid 그래서 * 솔루션을 선택하려면 "임의"*에 대한 요구 사항을 사용해야합니다. – user2864740

답변

1

random_bytes의 출력을 수정하여 인쇄 할 수있는 문자 범위로 제한 할 수 있습니다.

예 :

// 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; 
} 

그것은 원액의 종류,하지만 그것을 작동합니다. 이 특정 구현은 특정 문자에 대해 약간 편향됩니다.

정말로 임의의 파일 이름을 필요로하지 않는다면 번호를 매기는 것이 더 간단 할 수 있습니다. 충돌 가능성을 피할 수 있습니다.