잘되던 회원가입이 되지 않을 때 확인해야할 부분
본문
회원가입 스킨(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
먼저, 업데이트 처리 파일에서 폼 입력값이 잘 넘어오는지 체크부터 하셔야...
자체 해결 했습니다... 소셜가입은 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군데만 수정하면 되는 코드였던건데 너무 멀리 갔다왔네요;;
!-->!-->