워크박스
그누보드, 영카트 get_uniqid() 함수 본문
PHP8 Warning: A non-numeric value encountered in /lib/common.lib.php on line 2233
/*
유일한 키를 얻는다.
결과 :
년월일시분초00 ~ 년월일시분초99
년(4) 월(2) 일(2) 시(2) 분(2) 초(2) 100분의1초(2)
총 16자리이며 년도는 2자리로 끊어서 사용해도 됩니다.
예) 2008062611570199 또는 08062611570199 (2100년까지만 유일키)
사용하는 곳 :
1. 게시판 글쓰기시 미리 유일키를 얻어 파일 업로드 필드에 넣는다.
2. 주문번호 생성시에 사용한다.
3. 기타 유일키가 필요한 곳에서 사용한다.
기존의 get_unique_id() 함수를 사용하지 않고 get_uniqid() 를 사용한다.
*/
function get_uniqid()
{
global $g5;
sql_query(" LOCK TABLE {$g5['uniqid_table']} WRITE ");
while (1) {
// 년월일시분초에 100분의 1초 두자리를 추가함 (1/100 초 앞에 자리가 모자르면 0으로 채움)
// $key = date('YmdHis', time()) . str_pad((int)(microtime()*100), 2, "0", STR_PAD_LEFT);
// PHP8 환경에서 오류로 rand 함수를 사용해도 큰차이가 없기때문에 변경함
$key = date('YmdHis', time()) . str_pad(rand(0, 99), 2, "0", STR_PAD_LEFT);
$result = sql_query(" insert into {$g5['uniqid_table']} set uq_id = '$key', uq_ip = '{$_SERVER['REMOTE_ADDR']}' ", false);
if ($result) break; // 쿼리가 정상이면 빠진다.
// insert 하지 못했으면 일정시간 쉰다음 다시 유일키를 만든다.
usleep(10000); // 100분의 1초를 쉰다
}
sql_query(" UNLOCK TABLES ");
return $key;
}
Comments