2026, 새로운 도약을 시작합니다.

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

회원가입 스킨(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개

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

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

register_form_update.php

Copy


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 값을 가져오길래 그대로 변경해주고
Copy


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 를 ''(빈값)으로 되어있길래 이 분에도 다이렉트로 데이터를 박아버리고 가입하니... 잘 됩니다ㅠㅠ

Copy


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군데만 수정하면 되는 코드였던건데 너무 멀리 갔다왔네요;;

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

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

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

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

답변에 대한 댓글 1개

답변 감사드립니다ㅠㅠ 일일이 라인 바꿔가면서 값 찍어보는 수밖에 없겠네요ㅠㅠ

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

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

bbs/member~update

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

답변에 대한 댓글 1개

넵 변경했습니다... $mb_sex 를 본인인증 때 넘겨받는 거로 되어있는데 이니시스는 성별데이터는 못가져온다고 해서 $sql 문에 강제로 추가했었고, 본인인증때
[code]
$sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";
[/code]
이 코드를
[code]
if( get_session('ss_cert_sex') )
$sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";
[/code]
값이 있을 때만 $sql_certify 에 추가되게 조건처리해놓고

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

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

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

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

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

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

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

로그인
🐛 버그신고