개발 Q&A

제목 랜덤 아이디 생성시에...
글쓴이 헛발이 작성시각 2014/04/17 08:54:32
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 14804   RSS
숫자만으로 6자로 된 아이디를 자동생성되어 저장되는 데이터들을 만들었는데요....
이거 혹시 아주 나중에 혹시 데이터가 많아 지면 중복되는 경우가 있을까요?


소스는 다음과 같습니다..
 
if ( ! function_exists('get_random_password'))
{
    function get_random_password($chars_min=6, $chars_max=8, $use_upper_case=false, $include_string=false, $include_special_chars=false)
    {
        $length = rand($chars_min, $chars_max);
        $selection = '1234567890';
        if($include_string) {
            $selection .= "aeuoyibcdfghjklmnpqrstvwxz";
        }
        if($include_special_chars) {
            $selection .= "!@\"#$%&[]{}?|";
        }

        $password = "";
        for($i=0; $i<$length; $i++) {
            $current_letter = $use_upper_case ? (rand(0,1) ? strtoupper($selection[(rand() % strlen($selection))]) : $selection[(rand() % strlen($selection))]) : $selection[(rand() % strlen($selection))];            
            $password .=  $current_letter;
        }                

        return $password;
    }
}
 다음글 배열질문 (3)
 이전글 php 버전에 올라감에 따라 copy함수도 변경 되나요... (2)

댓글

수야디벨 / 2014/04/17 10:14:21 / 추천 0
어떤 자동생성 문자라고 해도 , 개발자는 1%의 오류도 대비하는 자세가 필요합니다.

마지막으로 데이터를 저장하기전에 , 그 데이터가 중복된 데이터 인지 한번 검사해주세요.

그래서 중복되지 않으면 데이터를 저장하시고, 중복되면 다시 자동생성 function 으로 흐르게 follow를 짜시면 

혹시나 .. 하는 오류를 막을수 있습니다 
한대승(불의회상) / 2014/04/17 10:18:34 / 추천 0
수야디벨님 의견처럼 아무리 정교하게 만들어도 중복이 있을수 있다에 저도 한표

CI에서도 랜덤으로 문자열을 만들어주는 함수가 있습니다.

참고 하셔요.. ^^
http://cikorea.net/user_guide_2.1.0/helpers/string_helper.html
헛발이 / 2014/04/17 10:33:39 / 추천 0
앗 있었군요....
괜히 함수를 찾아 만들었군요 ㅋㅋ

DB에서도 유니크 하게 설정하고 저장하기 전에 중복확인도 하긴 하지만...
램덤생성시 중복이 될까 하는 의문이 들어서요..

중복될 가능성이 100%없다고 볼수는 없군요..

잘 알겠습니다..
 
변종원(웅파) / 2014/04/17 10:44:47 / 추천 0
uuid 검색해서 적용해보세요. ^^