회원가입시 고유번호 주는것을 하는데 막힙니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

회원가입시 고유번호 주는것을 하는데 막힙니다. 정보

회원가입시 고유번호 주는것을 하는데 막힙니다.

본문

<?
include_once("./_common.php");

// 불법접근을 막도록 토큰생성
$token = md5(uniqid(rand(), true));
set_session("ss_token", $token);

if ($w == "") {
    // 회원 로그인을 한 경우 회원가입 할 수 없다
    // 경고창이 뜨는것을 막기위해 아래의 코드로 대체
    // alert("이미 로그인중이므로 회원 가입 하실 수 없습니다.", "./");
    if ($member[mb_id])
        goto_url($g4[path]);

    // 리퍼러 체크
    referer_check();

    if (!$_POST[agree])
        alert("회원가입약관의 내용에 동의하셔야 회원가입 하실 수 있습니다.", "./register.php");

    if (!$_POST[agree2])
        alert("개인정보취급방침의 내용에 동의하셔야 회원가입 하실 수 있습니다.", "./register.php");

    // 주민등록번호를 사용한다면 중복검사를 합니다.
    if ($config[cf_use_jumin]) {
        $jumin = sql_password($mb_jumin);
        $row = sql_fetch(" select mb_name from $g4[member_table] where mb_jumin = '$jumin' ");
        if ($row[mb_name]) {
            if ($row[mb_name] == $mb_name)
                alert("이미 가입되어 있습니다.");
            else
                alert("다른 이름으로 같은 주민등록번호가 이미 가입되어 있습니다.\\n\\n관리자에게 문의해 주십시오.");
        }

        // 주민등록번호의 7번째 한자리 숫자
        $y = substr($mb_jumin, 6, 1);

        // 성별은 F, M 으로 나눈다.
        // 주민등록번호의 7번째 자리가 홀수이면 남자(Male), 짝수이면 여자(Female)
        $sex = $y % 2 == 0 ? "F" : "M";

        // 생일은 8자리로 만든다 (나중에 검색을 편하게 하기 위함)
        // 주민등록번호 앞자리를 그냥 생일로 사용함 ㅠㅠ
        // 주민등록번호 7번째 자리를 따져서...
        $birth = substr($mb_jumin, 0, 6);
        if ($y == 9 || $y == 0) // 1800년대생 (계시려나?)
            $birth = "18" . $birth;
        else if ($y == 1 || $y == 2) // 1900년대생
            $birth = "19" . $birth;
        else if ($y == 3 || $y == 4) // 2000년대생
            $birth = "20" . $birth;
        else // 오류
            $birth = "xx" . $birth;
    }

    $member[mb_birth] = $birth;
    $member[mb_sex] = $sex;
    $member[mb_name] = $mb_name;

 


$maxnum = mysql_query("SELECT max(1000)+1 FROM $g4[member_table] where mb_1=$mb_1");
if(!$maxnum) $maxnum = 1000;

$mb_1 = date("Ymd").$maxnum ;
echo $mb_1 ;

    $g4[title] = "회원 가입";
}
else if ($w == "u")
{
    if ($is_admin)
        alert("관리자의 회원정보는 관리자 화면에서 수정해 주십시오.", $g4[path]);

    if (!$member[mb_id])
        alert("로그인 후 이용하여 주십시오.", $g4[path]);

    if ($member[mb_id] != $mb_id)
        alert("로그인된 회원과 넘어온 정보가 서로 다릅니다.");

    if (!($member[mb_password] == sql_password($_POST[mb_password]) && $_POST[mb_password]))
        alert("패스워드가 틀립니다.");

    // 수정 후 다시 이 폼으로 돌아오기 위해 임시로 저장해 놓음
    set_session("ss_tmp_password", $_POST[mb_password]);

    $g4[title] = "회원 정보 수정";
} else
    alert("w 값이 제대로 넘어오지 않았습니다.");

// 회원아이콘 경로
$mb_icon = "$g4[path]/data/member/".substr($member[mb_id],0,2)."/$member[mb_id].gif";
$member_skin_path = "$g4[path]/skin/member/$config[cf_member_skin]";

include_once("./_head.php");
include_once("./norobot.inc.php"); // 자동등록방지
include_once("$member_skin_path/register_form.skin.php");
include_once("./_tail.php");
?>

위는 /bbs/register_form.php 파일의 전체 내용입니다.

여기서 제가 수정한 부분은

$maxnum = mysql_query("SELECT max(1000)+1 FROM $g4[member_table] where mb_1=$mb_1");
if(!$maxnum) $maxnum = 1000;

$mb_1 = date("Ymd").$maxnum ;
echo $mb_1 ;
 
이부분인데 회원가입시에 날짜 + 고유번호   (증가값) 으로 구현을 해야 합니다.
우선 날짜부분은 date(Ymd)  를 이용하여 해결을 하였는데,
고유번호의 증가가 되지 않습니다.  제가 sql 문을 잘못사용하고 있는것인지 머리가 복잡해져서 감을 못잡고 있습니다.
계속 날짜+1000 으로만 출력이 되고 값이 중복이 되더라구요.
아 그리고 모든값은 mb_1 즉 회원가입의 여분필드로  넘어가고  Auto_increment  도  안됩니다.
어떤방법으로 수정을 해야 제대로 출력이 되고  값이 넘어가지는지 조언 부탁드립니다.

댓글 전체

$maxnum = mysql_query("SELECT max(1000)+1 FROM $g4[member_table] where mb_1=$mb_1");
얘가 뭔가요?? member DB에서 mb_1=$mb_1 인걸 불러다가 젤 큰거에 1을 더하나요???

회원 [member table]에는 mb_no 라는 auto_increment되는 키값이 이미 존재합니다.
게다가 여분필드 mb_1 은 필드타입이 varchar(255) 라 더군다나 auto_increment는 안될겁니다.

원하시는 여분필드에 생성하고자 하는 회원고유번호가
날짜+1000단위의 일련번호라면... 이렇게 해보세요.

            $maxnum = sql_fetch(" select mb_no from $member_table order by mb_no desc limit 1 ");

            if(!$maxnum) $maxnum=0;

            $maxnum = $maxnum[mb_no] + 1 ;

            $mb_1 = date("Ymd") . sprintf("%05d", $maxnum) ;
            echo $mb_1 ;
저도 여기저기서 주워듣고 배우는 1人 입니다. ㅋㄷㄷ
이것도 얼마전에 다른분한테 얻어들은 거에요.  ㅋ
sprintf("%05d", $maxnum)  --->  근데... 오타였네요... %05d는 10000단위.. 1000단위는 %04d 겠네여
전체 10 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT