input에 랜덤입력 방법
본문
게시물의 고유번호인것 처럼 하려고 하는건데요.
게시판 글쓰기 할때
wr_1에 5자리 숫자를 임의로 만들어
넣으려고 합니다.
그래서 업데이트 페이지에
$wr_1=rand(30000,70000);
해서 임의로 저장되게 해놨는데
문제는 중복이 생기면 안되는데
중복 방지는 어떻게 하는지 아세요?
아니면 영문을 섞어서 사용하는 방법이 있을까요?
다른 방법들도 알아보고 있지만 그방법이 가장 간편할 듯해서요.
답변 4
function randomKey($length) {
$key = "";
$pool = array_merge(range(0, 9), range('A', 'Z')); // 숫자, 영문 소문자, 영문 대문자
for($i=0; $i < $length; $i++){
$key .= $pool[mt_rand(0, count($pool) - 1)];
}
return $key;
}
$wr_1 = randomKey(8); // 8자리의 랜덤 문자열
echo $wr_1;
이런식으로 사용하셔도 될 것 같네요
확실하게 할려면 무한반복하고 동일값이 없으면 반복문을 끝내시면 될거 같네요
대강 이런식으로 응용하시면됩니다.
<?
$j = 0;
$create_coupon = false;
do {
$wr_1 = '234092340234'; // 번호
$sql3 = " select count(*) as cnt from g5_write_게시판명 where wr_1 = '$wr_1' ";
$row3 = sql_fetch($sql3);
if(!$row3['cnt']) {
$create_coupon = true;
break;
} else {
if($j > 20)
break;
}
} while(1);
if($create_coupon) {
$sql = " update g5_write_게시판명
set wr_1 = '$wr_1' where wr_id = '$wr_id' " ;
sql_query($sql);
}
?>
걍 시간+랜덤값에 md5를 돌리면 case sensitive영문+숫자로 구성된 문자열을 얻으실 수 있습니다.
이걸 5자리로 split해서 사용하시고 이후 중복 확인만 하면 될 듯 합니다.
5자리면 겹치긴 할텐데 숫자보다는 덜 겹치리라 생각 됩니다.
답변을 작성하시기 전에 로그인 해주세요.