웹마스터 팁

이번에  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로 만든 제로보드를 커스텀 할때마다 머리가 아프네요;














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

제목 글쓴이 날짜
제로보드XE XML파일 표준화 [2] BlueGATE 2008.11.13
약관 2개 만들기 [3] file WXPCM 2008.11.15
히든프레임 사랑비BGM 컨트롤하기(수정완료) [6] Pw-NET 2008.11.16
회원 관리 리스트에 생일/설명/활동량 추가하기 [16] file 老姜君 2008.11.21
1.1.0으로 패치하신분들 이미 모듈이 있습니다 오류 수정 [1] file 김도훈449 2008.11.23
1.1.0 업데이트 로그인문제관련 [6] 그냥뛰어 2008.11.24
1.1.1 패치후에 관리자 모드 접속시 에러 해결입니다. [7] file kim donggyu 2008.11.25
[설문조사] 메인페이지에 넣기와 효율적으로 관리하기 [6] file 빨간발 2008.11.27
본문내용을 강재로 중앙정렬시키는 꽁수 [4] file 크르르 2008.11.28
홈페이지의 아이콘(favicon)이 어느날 갑자기 사라졌을때... [1] 크르르 2008.11.28
글작성시 초기 기본 카테고리 선택 하기 [7] 똑디 2008.11.29
[초간단]회원팝업메뉴에 메뉴넣기 [1] Pw-NET 2008.11.30
1.1.1 패치후 게시판에서 파일첨부 레이어 겹침현상 문제 [1] 늘미소 2008.12.01
1.1.1로 업데이트시 참고하세요(1.0.3에서 업뎉했습니다) [4] 아이스마일 2008.12.04
서브홈페이지 만들기 [5] 가리사니 2008.12.09
주민등록 번호 받기(수정) [23] 개돌 2008.12.18
자신의 홈페이지에 플래시 오락실을 등록 해보자. [2] file 조성우371 2008.12.20
회원정보 이미지 항목 추가 [3] 개돌 2008.12.22
메인 페이지가 백지로 나올 때 이렇게 해보세요. [4] 시금치 2008.12.23
IIS7, PHP 5, MySQL 5, 제로보드 설치기 [1] 54장 2008.12.26