웹마스터 팁

이번에  1.1.2로 업그레이드 하면서 전체적으로 다시 정리해 봤습니다.

1. /xe/modules/member/schemas/member.xml
 -> 최초 XE설치 시 주민등록 번호 컬럼 추가
 -> 기존의 생년월일 필드를 수정하는 방법과 주민등록 필드를 추가하는 방법 중 주민등록 필드를 추가하는 방법으로 진행 하였습니다.
  (수정하려면 소스 상에 손댈게 많아 지더군요. 생년월일 관련 된 함수 다 수정 될듯)

-> + line 10 -> <column name="jumin" type="char" size="13" />    
->  최초 DB생성시 char 13의 jumin 이라는 필드 추가

2. /xe/modules/member/skins/default/filter/signup.xml
-> + line 9 -> <node target="jumin" required="false" minlength="13" maxlength="13" filter="jumin"/>
-> + line 18 -> <param name="jumin" target="jumin" />

3. /xe/modules/member/queries/insertMember.xml
-> line 14 -> <column name="jumin" var="jumin" minlength="13" maxlength="13"/>
-> 가입 폼 작성 하고 회원 가입 완료 시 jumin 필드에 데이터 insert를 위해 추가

4. /xe/modules/member/queries/getMemberSrl.xml
-> line 12 -> <condition operation="equal" column="jumin" var="jumin" pipe="and" />
-> 주민등록 번호 중복 가입 체크를 위해 추가

5. /xe/modules/member/tpl/js/signup_check.js
->line 17 수정
if(node_name != "user_id" && node_name != "nick_name" && node_name != "email_address") continue;
if(node_name != "user_id" && node_name != "nick_name" && node_name != "email_address" && node_name != "jumin") continue;
-> 중복 체크 항목에 jumin 필드 포함

6. /xe/modules/member/lang/ko.lang.php
+ line 135 -> $lang->msg_exists_jumin = '이미 존재하는 주민등록 번호입니다. 계정도용이 의심 될 경우 관리자에게 연락 주세요';
-> 주민등록 번호가 중복 될 경우 표시될 텍스트 추가
+ line 136 -> $lang->msg_false_jumin_no = '잘못된 주민등록 번호 형식입니다.';
-> 주민등록 번호 형식이 잘못 되었을 경우 표시될 텍스트 추가
+ line 158 -> $lang->about_jumin = '- 를 제외한 숫자 13자리를 입력해 주세요.';
-> 주민등록 필드 하단에 표시될 설명

7. /xe/common/lang/ko.lang.php
->+ line 89 -> $lang->jumin = '주민등록번호';
-> 회원 가입 폼의 주민등록 번호 항목에 표시될 이름

-> + line 293 -> $lang->filter->invalid_jumin = '잘못된 %s입니다.';
-> 잘못된 주민등록 번호 입력 시 alert창 표시 내용.

8. /xe/modules/member/skins/default/signup_form.html
+ line 66 ~ 72 
  <tr>
      <th scope="row">{$lang->jumin}</th>
      <td>
          <input type="password" name="jumin" value="" maxlength="13"/>
          <p>{$lang->about_jumin}</p>
      </td>
  </tr>

-> password 타입으로 주민등록 입력 폼 추가

-> line 87 ~ 94 -> 주석 처리
-> 주민등록 번호가 있으므로 생년월일 입력 필드 제거

9. /xe/modules/member/member.controller.php
-> + line 328 추가
case 'jumin' :
// 형식 검사
if($oMemberModel->isTrueNumber($value)) return new Object(0,'msg_false_jumin_no');
// 중복 검사
  $member_srl = $oMemberModel->getMemberSrlByJumin($value);
  if($member_srl && $logged_info->member_srl != $member_srl ) return new Object(0,'msg_exists_jumin');
break;
-> 주민등록 번호 형식 검사 및 중복 검사 호출

-> + line 350 -> 수정
$args = Context::gets('user_id','user_name','nick_name','homepage','blog','birthday','email_address'+ '+ ','password','allow_mailing');
$args = Context::gets('user_id'+ ','user_name','nick_name','jumin','homepage','blog'+ ','birthday','email_address','password','allow_mailing');
-> 입력 항목에 jumin 필드 포함



10. /xe/modules/member/member.model.php
-> + line 214 추가
/**
* @brief userid에 해당하는 member_srl을 구함
**/
function getMemberSrlByJumin($jumin) {
  $args->jumin = $jumin;
  $output = executeQuery('member.getMemberSrl', $args);
  return $output->data->member_srl;
}
-> 주민등록 번호 중복 검사

-> + line 494 추가
/**
* @brief 주민등록 번호 형식 확인
**/
function isTrueNumber($jumin) {
  $args->jumin1 = substr($jumin,0,6);
$args->jumin2 = substr($jumin,6,7);
if(strlen($args->jumin1)==6 && strlen($args->jumin2)==7) {
  $total = 0;
  for($i=0;$i<13;$i++){
    $jumin[$i] = intval($jumin[$i]);
}

$total = $jumin[0]*2 + $jumin[1]*3 + $jumin[2]*4 + $jumin[3]*5 + $jumin[4]*6 + $jumin[5]*7 + $jumin[6]*8 + $jumin[7]*9 + $jumin[8]*2 + $jumin[9]*3 + $jumin[10]*4 + $jumin[11]*5;
$total = $total%11;
$total2 = 11-$total;
if($total2>9) $total2 = $total2 % 10;
$total = $jumin[12];
if($total!=$total2) return true;
  else return false;
}
-> 주민등록 번호 형식 검사
(여기 궁금한게 있는데요 마지막에  if($total!=$total2) return true;  이부분이 원래 반대 아닌가요? 왜 저렇게 해야 적용되는지;;)

11. /xe/common/js/xml-js_filter.js
-> line 189
case "jumin" :
    return juminChk(value);
   break;

line 200
function juminChk(val) {
 var jumin1 = val.substr(0,6);
 var jumin2 = val.substr(6,7);

 var total = 0;
 var sval;
 for(i=0;i<13;i++){
  sval = val.substr(i,1);
  if(i<8) {
   total = total + (sval*(i+2));
  }
  if(i>7) {
   total = total + (sval*(i-6));
  }
 }

 total = total%11;
 var total2 = 11-total;
 if(total2>9) total2 = total2 % 10;
 total = val.charAt(12);

 if(total == total2) return true;
 else return false;
}

-> 저번에 제가 잘못 올려수 수정 했습니다.
js파일에서 해당 내용 확인 후 리턴 시켜주더군요.. 이거 찾느라고 모든 js파일 다 열어보고 함수 확인하고 생난리를 ㅡㅡ;
제보 주셔서 감사합니다.

================================================================================================

현재 위와 같이 입력시 주민등록 번호를 입력 받아 회원 가입을 하는 법을 정리한 것입니다.

주말동안 생각해보니 주민등록 번호는 한번 받으면 수정이 필요없는 부분이네요..
위와 같은 상태에서 view 페이지만 조금 수정해 주면 끝인것 같습니다 ..

제가 asp초급 개발자이다 보니 php로 만든 제로보드를 커스텀 할때마다 머리가 아프네요;














모듈에 주민등록번호 추가해 주실 분 대 환영 ㅠ.ㅠ

제목 글쓴이 날짜
모바일 사진 자동 회전 적용방법 [8] 더뿌 2014.02.11
웹뷰 개발시geocode(구글)활용법 file 웹빌드 2014.02.10
중복레코드 검색 및 삭제 ByteCMC 2014.02.10
그룹아이콘 모바일에서 표시하기 잉카러부 2014.02.09
XE를 사용중 백지현상이 있을경우 체크해볼 요소 [2] jambox 2014.02.08
스윙브라우저 유저분들 필독. [10] KSG2013 2014.02.08
1.7.4 - 페이지나 게시판 생성 후 설정화면에 가면 '사이트기본스킨사용' 이 적용되지 않는 버그 해결법 sejin7940 2014.02.08
누리고쇼핑몰에서 구주소에 새주소적용하기 [14] garnecia 2014.02.08
1.7.4 업데이트후 글쓰기 에러가 나신다면... [2] 맞장 2014.02.07
통합검색할때 회원별 권한에 따라 내용 보여주기 garnecia 2014.02.07
XE 1.7.4 새로운 우편번호 체계에서 나머지주소 관련 사용실수 방지방법입니다 [1] sejin7940 2014.02.07
[도로명주소 krzip] 1.7.4 이전 버전들에 이용하기 [3] XE플스 2014.02.06
관리자화면 상단의 업데이트 해야할 항목 안내문구 안 나오게 하는 방법 [1] sejin7940 2014.02.04
모바일레이아웃을 사용하되 모바일 게시판 스킨을 선택하지 않고 일반 게시판 스킨을 사용하는 방법 [4] sejin7940 2014.02.04
[XE 1.7] 스팸필터 설정이 안되는 경우 해결 방법 [3] 퍼니엑스이 2014.02.03
ux를 편리하게 하기 위한 css 팁 두랄루민 2014.02.03
1.5 -> 1.7 업글중 백지상태 부분!! una_nampyeon 2014.02.03
회원도 모듈별 적용된 포인트 보게하는 방법. [11] :DunhillBoy 2014.02.01
게시판 스킨 분석 [2] 이온디 2014.01.28
일반회원도 embed 태그 사용하는 방법! (다음/티스토리/구글드라이브 등) 가장 최근코어버전 해결완료!! [9] 주택바가지 2014.01.27