이 기사의 예에서는 PHP가 고유 식별자를 생성하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 구현 방법은 다음과 같습니다.
하지만 생성되는 식별자는 고유하지 않을 수 있으므로 많은 사람들이 다음과 같이 합니다.
//이것은 첫 번째 간단한 방법입니다. 물론 sha1() 함수를 사용할 수도 있습니다.
echo md5(time() . mt_rand(1,1000000));
//고유 식별자 생성
//sha1() 함수, "보안 해시 알고리즘(SHA1)"
함수 create_unique() {
$data = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']
.time() .rand();
sha1($data) 반환;
//md5(time().$data)를 반환합니다;
//$data를 반환합니다;
}
?>
예시는 다음과 같습니다.
$newhash = create_unique();
에코 $newhash
?>
md5() 함수가 정확히 이 목적을 위한 것은 아니지만 많은 사람들이 md5() 함수를 사용하는 것을 봅니다.
// 고유 문자열 생성
echo md5(time() . mt_rand(1,1000000));
실제로 이를 위해 사용되는 uniqid()라는 PHP 함수가 있습니다.
// 고유한 문자열 생성
echo uniqid();
/* 인쇄
4bd67c947233e
*/
// 또 다른 고유 문자열 생성
echo uniqid();
/* 인쇄
4bd67c9472340
*/
문자열은 고유하지만 처음 몇 문자는 유사하다는 것을 알 수 있습니다. 이는 결과 문자열이 서버 시간에 상대적이기 때문입니다.
하지만 실제로는 친근한 면도 있는데, 새로 생성된 각각의 ID는 알파벳순으로 정렬되기 때문에 정렬이 간단해집니다.
중복 확률을 줄이려면 접두사 또는 두 번째 매개변수를 전달하여 늘릴 수 있습니다.
// 접두어 포함
echo uniqid('foo_');
/* 인쇄
foo_4bd67d6cd8b8f
*/
// 엔트로피가 더 높음
echo uniqid('',true);
/* 인쇄
4bd67d6cd8b926.12135106
*/
// 둘 다
echo uniqid('bar_',true);
/* 인쇄
bar_4bd67da367b650.43684647
*/
이 함수는 md5()보다 짧은 문자열을 생성하여 공간을 절약합니다.
PHP에서 전역 고유 식별자(GUID)를 생성하는 방법
GUID는 공간과 시간에서 고유하므로 동시에 다른 장소에서 생성된 다른 숫자가 서로 다르다는 것을 보장합니다.
전 세계에 두 대의 컴퓨터가 중복된 GUID 값을 생성하지 않습니다.
GUID가 필요한 경우 알고리즘에 의해 완전히 자동으로 생성될 수 있으며 이를 관리하기 위해 권위 있는 조직이 필요하지 않습니다.
GUID는 길이가 고정되어 있고 상대적으로 짧기 때문에 정렬, 식별 및 보관에 이상적입니다.
코드 복사 코드는 다음과 같습니다.
//php가 GUID를 생성합니다
함수 getGuid() {
$charid = strtoupper(md5(uniqid(mt_rand(), true)))
$hyphen = chr(45);// "-"
$uuid = substr($charid, 0, 8).$하이픈
.substr($charid, 8, 4).$하이픈
.substr($charid,12, 4).$하이픈
.substr($charid,16, 4).$하이픈
.substr($charid,20,12);
$uuid 반환
}
?>
이 글이 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.