웹마스터 팁

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














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

제목 글쓴이 날짜
에디터의 옵션 설정하기.. 컴포넌트 보이지 않게 등.. [4] 지허 2007.10.01
다중의 이종 웹 브라우저에서 웹 사이트 테스트하기 [1] NetEagle 2007.10.01
페이지에 설문 조사 넣기 [2] 지허 2007.10.01
회원가입 약관 관련. [2] rickey 2007.09.28
(보드 모듈) 글 목록을 조회수 별로 색상 지정하기 [15] file Simulz 2007.09.27
로고에 플래시파일 사용하기 [2] 팔공산 2007.09.26
(모듈 설정) 모듈 목록을 추가하여 설정을 쉽고 빠르게 #2, 2007-09-28 [3] file Simulz 2007.09.23
제로보드 XE 설치후에 제대로 작동 안하는 원인은... 독도2005 2007.09.22
<수정>사이트 메신저 회원 연동해서 사용하기.... [3] 녀석참 2007.09.22
공지창 소스 [2] 열린 공간 2007.09.21
(포인트 모듈) 추가 정보 출력 [8] file Simulz 2007.09.20
새 공지창 띄우기 [22] *제트* 2007.09.20
정사각형 썸네일은 안녕~ 직사각형 썸네일을 만들어보자 [8] 매니안 2007.09.19
제로보드 XE에서 강추하는 플래시 넣기 [12] 미오유 2007.09.19
게시물 읽을 때 하단에 목록 보이지 않게 하기 [3] 정은기 2007.09.17
winxp IE7 rwapm에서 한글이름파일 업로드 [12] 공수래 2007.09.17
요청하신 모듈을 찾을 수 없습니다 문제해결 방법 [11] 써니a 2007.09.17
2차,3차 메뉴가 좌측으로 일렬로 되어있어 구분이 잘 안됩니다,이럴 때~ [7] file *제트* 2007.09.16
메뉴와 연결된 xe의 page에 iframe을 사용해서 제로보드4 게시판을 불러들였습니다 [2] 바람처럼.. 2007.09.14
파일 업로드시에 403에러 발생시 해결방법. [12] WhiteAT 2007.09.12