회원가입시 register_form_update.php 질문요
본문
파일 위치: bbs/register_form_update.php
질문배경: 저는 회원가입시 성별, 생일을 입력하게, 회원 수정시 성별 생일을 수정하게, 추가로 항목을 폼에 넣었습니다.
따라서 아래 소스 이후의 insert 구문 mb_birth, mb_sex 에 값을 넣어주고 update 구문에 mb_birth, mb_sex 의 값을 수정하게 합니다.
문제 : 문제는 아래 소스에 붉은 부분처럼
mb_birth, mb_sex의 값을 왜 빈값으로 지정했는지...그게 이해가 안갑니다.
그것때문에... 아래 소스의 이후에...insert구문과 update 구문에도 역시 mb_birth, mb_sex 가 나와서
mb_birth, mb_sex 가 두번씩 나와서.. 프로그래밍이 에러가 납니다.
질문요지 : 아래 소스(붉은 부분)에서 왜 mb_birth, mb_sex 에 빈값을 넣어주고 있습니까?
내용시작 ====================
$sql_certify = '';
$md5_cert_no = $_SESSION['ss_cert_no'];
$cert_type = $_SESSION['ss_cert_type'];
if ($config['cf_cert_use'] && $cert_type && $md5_cert_no) {
// 해시값이 같은 경우에만 본인확인 값을 저장한다.
if ($_SESSION['ss_cert_hash'] == md5($mb_name.$cert_type.$_SESSION['ss_cert_birth'].$md5_cert_no)) {
$sql_certify .= " , mb_hp = '{$mb_hp}' ";
$sql_certify .= " , mb_certify = '{$cert_type}' ";
$sql_certify .= " , mb_adult = '{$_SESSION['ss_cert_adult']}' ";
$sql_certify .= " , mb_birth = '{$_SESSION['ss_cert_birth']}' ";
$sql_certify .= " , mb_sex = '{$_SESSION['ss_cert_sex']}' ";
$sql_certify .= " , mb_dupinfo = '{$_SESSION['ss_cert_dupinfo']}' ";
if($w == 'u')
$sql_certify .= " , mb_name = '{$mb_name}' ";
} else {
$sql_certify .= " , mb_hp = '{$mb_hp}' ";
$sql_certify .= " , mb_certify = '' ";
$sql_certify .= " , mb_adult = 0 ";
$sql_certify .= " , mb_birth = '' ";
$sql_certify .= " , mb_sex = '' ";
}
} 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 = '' ";
}
}
답변 3
이거슨... G5였군. G4에서 아무리 찾아도 없어서 혹시나 하고 G5를 열어 봤네요. ㅡㅡ; 저는 G4 세대라...
이 구문에서는 HP, 즉 휴대폰 인증을 사용 여부를 따지고 그 조건에 종속 되어 또 인증을 성공했느냐 못했느냐를 따지는 비교구문인 듯합니다.
생일과 성별에 '' Null 문자를 넣는 경우는 두 가지입니다.
휴대폰 인증을 사용하지 않거나 인증에 실패했을 때.
이때는 검증되지 않은 개인정보를 DB에 기록 할 수는 없죠.
그래서 세션에 임의로 저장한 개인정보를 날려 버립니다.
질문에서는 이 문장 때문에 그 뒤에 insert나 update에서 생년월일과 성별을 인증 그런 거 따지지 않고 수정 가능하게 하고 싶은데 필드가 중복 기재 되니 에러가 난다 하는 것 같습니다.
그럴 땐 빨간 부분 된 것을 지워 주시면 됩니다.
insert는 회원 가입시 한번만 실행 되니 문제가 안 되는데 update는 회원정보 수정일테니 휴대폰인증을 사용 할 때는 지웠을 때 원치 않는 결과를 초래 할 수도 있습니다.
이건 경우의 수를 다 따져봐야 하기 때문에 설명 드리면 매우 길어지구요,
일단 휴대폰 인증을 사용하지 않는다는 조건이면 빨간색 부분은 삭제 하셔도 됩니다.
그리고 성별과 생년월일은 그 아래 구문에서 직접 다루시면 되구요.
만약 휴대폰 인증을 사용하면서 생년월일과 성별을 수정 해야 한다면 다시 질문 주세요.
빈값이기 보다는 초기화라고 생각하면 편할듯합니다
기존에 값이 있을 경우 없애는 용도로 사용하고 있는 듯 합니다
페이지의 용도가 등록과 수정이 같이 되는 페이지니까요
딱히 위 구문은 에러가 날 이유가 없어 보이네요..
해당 Insert나 Update쪽에서 나는 에러가 아닌지 의심드네요..
가능하시면 insert 나 Update 소스나 에러 구문을 보여주시는게 좋을거 같습니다.