테스트 사이트 - 개발 중인 베타 버전입니다

input에 랜덤입력 방법 채택완료

망이망소이 7년 전 조회 2,251

게시물의 고유번호인것 처럼 하려고 하는건데요.

게시판 글쓰기 할때

wr_1에 5자리 숫자를 임의로 만들어

넣으려고 합니다.

그래서 업데이트 페이지에 

$wr_1=rand(30000,70000); 

해서 임의로 저장되게 해놨는데

문제는 중복이 생기면 안되는데

중복 방지는 어떻게 하는지 아세요?

아니면 영문을 섞어서 사용하는 방법이 있을까요?

다른 방법들도 알아보고 있지만 그방법이 가장 간편할 듯해서요.

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
7년 전

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;

 

이런식으로 사용하셔도 될 것 같네요 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

망이망소이
7년 전
감사합니다. 좋네요. 딱 제가 원하던거네요 ^^

댓글을 작성하려면 로그인이 필요합니다.

w
7년 전

걍 시간+랜덤값에 md5를 돌리면 case sensitive영문+숫자로 구성된 문자열을 얻으실 수 있습니다.

이걸 5자리로 split해서 사용하시고 이후 중복 확인만 하면 될 듯 합니다.

5자리면 겹치긴 할텐데 숫자보다는 덜 겹치리라 생각 됩니다.

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

망이망소이
7년 전
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

그누위즈

대강 이런식으로 응용하시면됩니다.

</p>

<p><?

$j = 0;

$create_coupon = false;</p>

<p>do {

    $wr_1 = '234092340234'; // 번호</p>

<p>    $sql3 = " select count(*) as cnt from g5_write_게시판명 where wr_1 = '$wr_1' ";

    $row3 = sql_fetch($sql3);</p>

<p>    if(!$row3['cnt']) {

        $create_coupon = true;

        break;

    } else {

        if($j > 20)

            break;

    }

} while(1);</p>

<p>if($create_coupon) {

    $sql = " update g5_write_게시판명

                set wr_1 = '$wr_1' where wr_id = '$wr_id' " ; 

    sql_query($sql); 

}

?></p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

7년 전

확실하게 할려면 무한반복하고 동일값이 없으면 반복문을 끝내시면 될거 같네요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

망이망소이
7년 전
답변 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인