잘되던 회원가입이 되지 않을 때 확인해야할 부분

잘되던 회원가입이 되지 않을 때 확인해야할 부분

QA

잘되던 회원가입이 되지 않을 때 확인해야할 부분

그누보드5(영카트) 버전

5.6.15

사용 PHP 버전

7.4

본문

회원가입 스킨(register_form.skin.php)
회원가입 업데이트(register_form_update.php)

본인인증 연동(member_cert_refresh_update.php)

 

본인인증(이니시스)도 받고, 이니시스 인증은 성별데이터는 넘겨받지 못받는다고 해서 성별 데이터는 radio 로 직접 선택받아서 가입을 진행되게 구현을 해놓았었는데요

 

보다보니 성별을 수기로 선택해서 넘겨받아도 본인인증 처리 과정에서 성별데이터가 초기화 되는 현상을 발견해서 업데이트에서 본인인증 처리하는 부분에서 성별 데이터 저장하는 코드를 보니 get_session('ss_cert_sex') 값으로 저장이 되어야하는데 애초에 성별 데이터를 넘겨받지 못하다보니 저 세션값이 빈값이라 계속 누락되는거 아닌가 싶어서 필요없는 코드라 판단해서 주석처리로 가입도 해보고

 

이것저것 스킨이며 업데이트며 성별 필드 관련해서 수정하고 가입해보려고 하니 가입이 안되고 메인으로 튕겨버리는 증상이 발생했습니다;;

 

아무리봐도 원인을 모르겠는데요... 역순으로 하나씩 원래대로 원복시켜가며 저장하고 가입해보고 저장하고 가입해보고 결국은 커스텀하기전 기본 코드까지 돌아온 후에도 가입해봐도 계속 register_result 로 넘어가지 않고 메인으로 튕겨버립니다;;

 

db에 insert도 안되는거보면 register_update 자체를 못거치고 메인으로 튕기는 것 같은데요;;

대체 어느 부분을 확인해봐야할까요...;;

 

그누보드5 기본 코드로 원복해서도 가입이 안되고 있는 상태다보니 대체 어느 부분을 확인해봐야하는지 모르겠네요ㅠ

이 질문에 댓글 쓰기 :

답변 3

혹 회원디비 스키마 변경되지 않아나요?

bbs/member~update

넵 변경했습니다... $mb_sex 를 본인인증 때 넘겨받는 거로 되어있는데 이니시스는 성별데이터는 못가져온다고 해서 $sql 문에 강제로 추가했었고, 본인인증때


$sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";

이 코드를

if( get_session('ss_cert_sex') )
    $sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";

값이 있을 때만 $sql_certify 에 추가되게 조건처리해놓고

이게 회원가입이 갑자기 안된 시점이 회원가입폼에서 간편인증 버튼을 주석처리해서 숨긴 이후부터 가입이 안되더니 코드를 원복해도 계속 안되더라구요;;

그누보드 기본 코드로 덮어씌우고 가입해봐도 안돼서 질문올리게 됐습니다ㅠ

그누보드 버전은 5.6.15 버전으로 설치해서 개발중이었는데

마케팅동의 부분이 바뀌어서 5.6.23 버전의 g5_member 와 현재 5.6.15 버전의 g5_member 테이블을 비교해서 최신거로 맞춰주고, register_form_update 에도 마케팅동의 부분을 추가했었습니다...;;

결론은 말씀해주신 db 스키마가 변경됐다고 하는게 맞는지는 모르겠지만 필드를 추가하고 register_form_update 에도 추가된 필드를 sql 문에 넣어놓긴 했습니다ㅠ

먼저, 업데이트 처리 파일에서 폼 입력값이 잘 넘어오는지 체크부터 하셔야...

자체 해결 했습니다... 소셜가입은 db 에 잘 들어오길래 소셜가입쪽 register_member_update.php 와 일반가입쪽 register_form_update.php 파일을 비교해서 소셜쪽은 가입이 되고 있으니 소셜쪽 기준으로 mb_sex 필드 저장하는 부분의 코드를 맞춰서 다시 일반가입을 진행해보니 잘 됩니다ㅠㅠ;;

가입 조건문($w == '')에서 $sql, 수정 조건문($w == 'u')에서 $sql 에 추가했던 mb_sex = '{$mb_sex}', 코드는 양쪽 다 없애고

register_form_update.php


if ($config['cf_cert_use'] && $cert_type && $md5_cert_no) {
    // 해시값이 같은 경우에만 본인확인 값을 저장한다.
    if ($cert_type == 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$md5_cert_no)) { // 아이핀일때 hash 값 체크 hp미포함
        $sql_certify .= " , mb_hp = '{$mb_hp}' ";
        $sql_certify .= " , mb_certify  = '{$cert_type}' ";
        $sql_certify .= " , mb_adult = '".get_session('ss_cert_adult')."' ";
        $sql_certify .= " , mb_birth = '".get_session('ss_cert_birth')."' ";
        $sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";
        $sql_certify .= " , mb_dupinfo = '".get_session('ss_cert_dupinfo')."' ";
        if($w == 'u')
            $sql_certify .= " , mb_name = '{$mb_name}' ";
    } else if($cert_type != 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$mb_hp.$md5_cert_no)) { // 간편인증, 휴대폰일때 hash 값 체크 hp포함
        $sql_certify .= " , mb_hp = '{$mb_hp}' ";
        $sql_certify .= " , mb_certify  = '{$cert_type}' ";
        $sql_certify .= " , mb_adult = '".get_session('ss_cert_adult')."' ";
        $sql_certify .= " , mb_birth = '".get_session('ss_cert_birth')."' ";
        $sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";
        $sql_certify .= " , mb_dupinfo = '".get_session('ss_cert_dupinfo')."' ";
        if($w == 'u')
            $sql_certify .= " , mb_name = '{$mb_name}' ";
    }else {
        alert('본인인증된 정보와 입력된 회원정보가 일치하지않습니다. 다시시도 해주세요');
    }
} else {
    if (get_session("ss_reg_mb_name") != $mb_name || get_session("ss_reg_mb_hp") != $mb_hp) {
        $sql_certify .= " , mb_hp = '{$mb_hp}' ";
        $sql_certify .= " , mb_certify = '' ";
        $sql_certify .= " , mb_adult = 0 ";
        $sql_certify .= " , mb_birth = '' ";
        $sql_certify .= " , mb_sex = '' ";
    }
}

기본 코드에서 소셜쪽은 세션값을 안불러오고 다이렉트로 $mb_sex 값을 가져오길래 그대로 변경해주고

if ($config['cf_cert_use'] && $cert_type && $md5_cert_no) {
    // 해시값이 같은 경우에만 본인확인 값을 저장한다.
    if ($cert_type == 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$md5_cert_no)) { // 아이핀일때 hash 값 체크 hp미포함
        $sql_certify .= " , mb_hp = '{$mb_hp}' ";
        $sql_certify .= " , mb_certify  = '{$cert_type}' ";
        $sql_certify .= " , mb_adult = '".get_session('ss_cert_adult')."' ";
        $sql_certify .= " , mb_birth = '".get_session('ss_cert_birth')."' ";
        // $sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";
        $sql_certify .= " , mb_sex = '".$mb_sex."' "; // get_session 으로 불러오던걸 다이렉트 데이터로
        $sql_certify .= " , mb_dupinfo = '".get_session('ss_cert_dupinfo')."' ";
        if($w == 'u')
            $sql_certify .= " , mb_name = '{$mb_name}' ";
    } else if($cert_type != 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$mb_hp.$md5_cert_no)) { // 간편인증, 휴대폰일때 hash 값 체크 hp포함
        $sql_certify .= " , mb_hp = '{$mb_hp}' ";
        $sql_certify .= " , mb_certify  = '{$cert_type}' ";
        $sql_certify .= " , mb_adult = '".get_session('ss_cert_adult')."' ";
        $sql_certify .= " , mb_birth = '".get_session('ss_cert_birth')."' ";
        // $sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";
        $sql_certify .= " , mb_sex = '".$mb_sex."' "; // get_session 으로 불러오던걸 다이렉트 데이터로
        $sql_certify .= " , mb_dupinfo = '".get_session('ss_cert_dupinfo')."' ";
        if($w == 'u')
            $sql_certify .= " , mb_name = '{$mb_name}' ";
    }else {
        alert('본인인증된 정보와 입력된 회원정보가 일치하지않습니다. 다시시도 해주세요');
    }
} else {
    if (get_session("ss_reg_mb_name") != $mb_name || get_session("ss_reg_mb_hp") != $mb_hp) {
        $sql_certify .= " , mb_hp = '{$mb_hp}' ";
        $sql_certify .= " , mb_certify = '' ";
        $sql_certify .= " , mb_adult = 0 ";
        $sql_certify .= " , mb_birth = '' ";
        $sql_certify .= " , mb_sex = '' ";
    }
}

이렇게 수정 후 가입을 해보니 가입은 정상적으로 잘 되나 성별 값이 안넘어오길래, 앞 코드들 하단 $sql_certify 에 대입되는 코드보면 mb_sex 를 ''(빈값)으로 되어있길래 이 분에도 다이렉트로 데이터를 박아버리고 가입하니... 잘 됩니다ㅠㅠ


if ($config['cf_cert_use'] && $cert_type && $md5_cert_no) {
    // 해시값이 같은 경우에만 본인확인 값을 저장한다.
    if ($cert_type == 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$md5_cert_no)) { // 아이핀일때 hash 값 체크 hp미포함
        $sql_certify .= " , mb_hp = '{$mb_hp}' ";
        $sql_certify .= " , mb_certify  = '{$cert_type}' ";
        $sql_certify .= " , mb_adult = '".get_session('ss_cert_adult')."' ";
        $sql_certify .= " , mb_birth = '".get_session('ss_cert_birth')."' ";
        // $sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";
        $sql_certify .= " , mb_sex = '".$mb_sex."' ";
        $sql_certify .= " , mb_dupinfo = '".get_session('ss_cert_dupinfo')."' ";
        if($w == 'u')
            $sql_certify .= " , mb_name = '{$mb_name}' ";
    } else if($cert_type != 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$mb_hp.$md5_cert_no)) { // 간편인증, 휴대폰일때 hash 값 체크 hp포함
        $sql_certify .= " , mb_hp = '{$mb_hp}' ";
        $sql_certify .= " , mb_certify  = '{$cert_type}' ";
        $sql_certify .= " , mb_adult = '".get_session('ss_cert_adult')."' ";
        $sql_certify .= " , mb_birth = '".get_session('ss_cert_birth')."' ";
        // $sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";
        $sql_certify .= " , mb_sex = '".$mb_sex."' ";
        $sql_certify .= " , mb_dupinfo = '".get_session('ss_cert_dupinfo')."' ";
        if($w == 'u')
            $sql_certify .= " , mb_name = '{$mb_name}' ";
    }else {
        alert('본인인증된 정보와 입력된 회원정보가 일치하지않습니다. 다시시도 해주세요');
    }
} else {
    if (get_session("ss_reg_mb_name") != $mb_name || get_session("ss_reg_mb_hp") != $mb_hp) {
        $sql_certify .= " , mb_hp = '{$mb_hp}' ";
        $sql_certify .= " , mb_certify = '' ";
        $sql_certify .= " , mb_adult = 0 ";
        $sql_certify .= " , mb_birth = '' ";
        $sql_certify .= " , mb_sex = '{$mb_sex}' ";
    }
}

이게 자체해결한 최종코드입니다ㅠㅠ

 

결과만 보면 딱 3군데만 수정하면 되는 코드였던건데 너무 멀리 갔다왔네요;;

답변을 작성하시기 전에 로그인 해주세요.
전체 129,672 | RSS
QA 내용 검색

회원로그인

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