웹마스터 팁

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














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

제목 글쓴이 날짜
짧은주소 사용시 긴주소 검색엔진 차단시키기 [10] Volun 2014.01.14
업로드 용량을 .htaccess 파일로 제어하기 [9] 야옹이님 2014.01.15
정확한 계산기 소스입니다. [2] file 현탁 2014.01.15
XE 전체 타이틀(title) 수정하기 [3] pezex 2014.01.16
[10원팁] 스케치북 추천/비추천/신고를 눈에 들어오게 socialskyo 2014.01.17
관리자가 무제한 추천 가능하게 하는 방법 [2] sejin7940 2014.01.17
룰셋 적용 팁 [1] file 루비스코 2014.01.20
게시판 설정의 게시판 정보 탭에서, 고급 항목이 항상 노출되도록 하는 방법 [3] sejin7940 2014.01.20
메뉴추가가 안돼요. [2] file 궁굼자 2014.01.20
게시판 최초 정렬을 사용자정의(확장변수) 기준으로 설정 가능하게 하는 방법 [8] sejin7940 2014.01.20
[jQuery] PNG투명 이미지 animate시 IE7,8 투명이미지 표현 문제. 투니페이퍼 2014.01.21
썸네일 특정 파일로 불러오기 [18] Lansi 2014.01.21
Captcha 애드온 준회원만 적용하기 [2] 라싸 2014.01.22
1.7.3.8 설치 후 위에 어드민바가 안 보이는 증상을 해결하는 방법. [2] 야옹이님 2014.01.22
input 체크박스, 라디오버튼 테두리 제거 헤이즈디자인 2014.01.22
faq 묘듈 사용시 레이아웃을 깨는 css [3] 착한악마 2014.01.23
xe_2009 게시판 스킨 사용시 브라우저 타이틀 지우기 착한악마 2014.01.23
부트스트랩 기초 지식 강의 돼지코구뇽 2014.01.24
사이트맵에서 메뉴 생성할때 메뉴 추가 항목에 해당 모듈이 바로 연결되도록 [2] sejin7940 2014.01.25
일반회원도 embed 태그 사용하는 방법! (다음/티스토리/구글드라이브 등) 가장 최근코어버전 해결완료!! [9] 주택바가지 2014.01.27