회원가입시 register_form_update.php 질문요

회원가입시 register_form_update.php 질문요

QA

회원가입시 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는 회원정보 수정일테니 휴대폰인증을 사용 할 때는 지웠을 때 원치 않는 결과를 초래 할 수도 있습니다.

 

이건 경우의 수를 다 따져봐야 하기 때문에 설명 드리면 매우 길어지구요,

일단 휴대폰 인증을 사용하지 않는다는 조건이면 빨간색 부분은 삭제 하셔도 됩니다.

그리고 성별과 생년월일은 그 아래 구문에서 직접 다루시면 되구요.

만약 휴대폰 인증을 사용하면서 생년월일과 성별을 수정 해야 한다면 다시 질문 주세요. 

ss_cert_no
용도를 말씀하시는 건지 목적을 말씀하시는 건지 역할을 말씀하시는 건지 ㅡㅡ?

$_SESSION[]은 배열 형태로 저장 되는데 ss_crt_no은 배열의 키 열할을 합니다.
목적은 세션을 저장하기 위한 것이고
용도는 프로세스에서 임의로 생성한 구분 키를 저장하는 것이죠.
이런 것이 왜 필요하냐면 만약 동시에 여러 사람이 같은 인증을 시도 했을 때 사람마다 고유 키가 없다면 개인에게 전송 된 인증번호를 구분할 키워드가 없게 되죠.
그래서 랜덤으로 발생한 유니크한 키워드를 해싱해서 세션에 저장하게 됩니다.

1. 이것을 한글로 풀어보면 무슨 말인가요?
if ($config['cf_cert_use'] && $cert_type && $md5_cert_no) { 

위의 조건은 아래와 같은데요

$_SESSION['ss_cert_type'] 는 무슨 뜻입니까? ss_cert_type의 세션은 어디에서 어떻게 정해졌습니까?
찾기가 어렵네요^^;
그것을 몰라서 아래 내용이 어떤 조건인지 감이...-_-;

 if ($config['cf_cert_use'] && $_SESSION['ss_cert_type'] && $_SESSION['ss_cert_no']) { 
본인확인설정을 했고 && ?????? && 세션넘버가 세팅되었으면 같은데요

제가 G5를 다 살펴 본 게 아니라서 정확히 문맥을 파악 하기는 어렵습니다. 나중에 시간 내서 다시 살펴 볼 필요가 있습니다.
문맥 흐름상 예상은 되지만 섣부른 답변은 혼란을 가중 할 거 같습니다. 말씀 드린대로 저는 G4 세대라... ㅎㅎ

다만 예상을 해 보자면 인증을 요구한 사용자, 인증 방식, 인증 구분자(?) 등의 값이 존재 한다면 아래 조건문을 실행 하라는 것으로 추측이 가능합니다.

빈값이기 보다는 초기화라고 생각하면 편할듯합니다

기존에 값이 있을 경우 없애는 용도로 사용하고 있는 듯 합니다

페이지의 용도가 등록과 수정이 같이 되는 페이지니까요 

딱히 위 구문은 에러가 날 이유가 없어 보이네요..

 

해당 Insert나 Update쪽에서 나는 에러가 아닌지 의심드네요..

 

가능하시면 insert 나 Update 소스나 에러 구문을 보여주시는게 좋을거 같습니다.

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

회원로그인

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