웹마스터 팁
주민등록 번호 받기(수정)
2008.12.18 18:12
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로 만든 제로보드를 커스텀 할때마다 머리가 아프네요;
모듈에 주민등록번호 추가해 주실 분 대 환영 ㅠ.ㅠ
댓글 23
-
0uman
2008.12.18 19:03
주민번호 정말 필요했던건데 .. 암호화가 안된다니 흑흑 아쉽네요 -
개돌
2008.12.19 11:15
암호화는 가능하겠지만 그걸 복호화 해서 다시 보려면..
복호화가 가능한 암호화 방식을 써야 될테고.. 어차피 복호화가 된다면 왠만한 크래킹 툴들이 대부분의 암호의 복호화 기능을 갖추고 있어서 큰 의미가 없을것 같네요;
더군다나 제가 암호화에대한 지식이 많이 않아서 좋은 방법이 생각나지도 않고요 ㅠ.ㅠ -
SMaker
2008.12.19 18:46
주민번호를 복호화해서 볼 이유는 없는 것 같습니다.
유출되면 곤란하고요...
그냥 md5로 암호화하면 될 듯 합니다. -
개돌
2008.12.22 08:51
주민번호를 단순히 중복 검사에만 사용할 목적이 아니라서요
예를 들면 이력서를 그냥 홈페이지 통해서 받는다던가 하는 용도로 사용해 보려 합니다.
이럴때 주민등록 번호가 암호화 되어있으면 그것도 문제라서요.
필수 입력 사항은 아니지만 입사지원을 할 경우에 한해서는 개인정보에서 꼭 수정되어야 할 사항이라는 목적으로 만든 기능입니다.ㅜ.ㅜ -
뽀칠이
2008.12.18 23:44
혹시 확장변수에 항목 추가하는 방법은 없을까요? -
개돌
2008.12.19 11:15
저도 확장변수로 한번에 추가 되면 좋겠어요..
실력이 딸려서 저렇게 코딩으로 하고 있네요; -
개돌
2008.12.19 18:23
회원 정보 수정을 제외한 회원 가입에 대한 구문을 마무리 하여 올렸습니다.
회원 정보 수정 부분도 완료 되면 추가로 수정해서 올리겠습니다.
주 언어가 PHP가 아니라 무지 어렵네요; -
데미나인
2008.12.21 10:49
애드온 형식으로는 안될까요?ㅠㅠ
업데이트때마다 적용시켜야되서 골치아플거같네요ㅠ;; -
개돌
2008.12.22 08:45
주말동안 생각해보니... 주민등로번호는 한번 받으면 수정할 필요가 없는 부분이네요;;
그래서 수정 기능은 빼기로 함 ㅎ;;;
저도 한번에 적용되도록 만들어 보고 싶지만.
제 주 개발 언어가 php가 아니라 제로보드 볼때 마다 머리가 아픕니다 ㅠ.ㅠ
회사에서는 커스텀을 원하고 저는 머리 싸매고 ㅠ.ㅠ -
아이서핑
2008.12.26 23:59
이대로 했는데 안되네요 ㅠ 주민번호 잘못 쓰면 밑에 잘못된 주민번호 형식이라고까지는 뜨는데
거기서 회원등록 누르면 바로 가입이 되는;;;
그리고
/**
* @brief userid에 해당하는 member_srl을 구함
**/
function getMemberSrlByJumin($jumin) {
$args->jumin = $jumin;
$output = executeQuery('member.getMemberSrl', $args);
return $output->data->member_srl;
요기서 맨 마지막에 }가 빠진거 같습니다, -
개돌
2008.12.29 09:33
드래그 & 복사 로 하다가 } 빼먹었었네요 감사합니다.
회원 가입 체크에서 말씀하신 부분을 제가 빼먹었네요;
/xe/modules/member/skins/default/filter/signup.xml
line 9 추가
<node target="jumin" required="false" minlength="13" maxlength="13" filter="jumin"/> // 저는 필수 항목이 아니라 required="false"로 했습니다.
/xe/common/lang/ko.lang.php
line 293 -> $lang->filter->invalid_jumin = '잘못된 %s입니다.';
/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;
}
본문에 내용 추가 해두겠습니다. -
o앙마o
2008.12.30 10:35
9. /xe/modules/member/member.controller.php
-> + line 328 추가
// 이미 존재하는 글인지 체크
$oDocument = $oDocumentModel->getDocument($obj->document_srl, $this->grant->manager);
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;
// 이미 존재하는 경우 수정
위부분만 입력하면 홈페이지 진입 안되고 계속 에러나요
"Parse error: syntax error, unexpected T_CASE in /home2/lucir/public_html/xe/modules/member/member.controller.php on line 328"
위부분 삭제하면 홈페이지 진입이랑 가입까지 접속되는데 계속 잘못된 주민등록번호 형식이라고 뜨네요ㅠㅠ -
개돌
2008.12.30 12:46
앙마님 버젼이 어떻게 되세요?
저는 1.1.3이고요
function procMemberCheckValue() 함수 찾으셔서요
switch($name) {
요 스위치문 제일 아래에 추가해 주시면 됩니다.
아마 버젼문제나 혹은 다른 이유로 저랑 다른 라인에 추가 하신 것 같네요.
switch 문 찾아보세요 -
o앙마o
2008.12.30 15:13
개돌님 감사합니다. 저도 1.3.3버전입니다.
본문에 328라인이라 되어 있어서 그기서 찾았는데
개돌님 가르쳐주신 함수 찾으니 382라인이네요 ^^
접속 에러 나는 부분은 해결되었네요 ^^
회원 가입시 "잘못된 주민등록번호입니다." 라는 에러는 계속 ㅠㅠ -
개돌
2008.12.30 16:59
아.. 회원가입시 잘못된 주민등록번호입니다. 오류도 수정 해서 올렸습니다.
위에 댓글에 /xe/db/DB.class.php 파일의 수정은 원상 복구 하시고요
/xe/common/js/xml_js/filter.js 파일을 수정하시면됩니다.
이거때문에 저도 몇시간을 헤맸네요 ^^;;
그리고 저는 다른 커스터 마이징 한게 많다 보니 line수가 조금 안맞을 수 있습니다.
최초 원본의 line을 기억하지 않고 있어서 죄송합니다 (__);; -
싱하형
2008.12.31 16:45
호오~ -
o앙마o
2009.01.01 00:26
수정하였는데도 계속 "잘못된 주민본록번호입니다."라는 에러 떠네요 ㅠㅠ -
o앙마o
2009.01.01 00:51
<tr>
<th scope="row">{$lang->jumin}</th>
<td>
<input type="text" name="jumin" value="" maxlength="6"/> - <input type="password" name="jumin" value="" maxlength="7"/>
<p>{$lang->about_jumin}</p>
</td>
</tr>
입력창을 두개로 줬더니 잘못된 형식이라는 에러는 안나네요
근데 다른 "Unknown column 'jumin' in 'field list' "라는 에러 팝업이 떠네요 ㅠㅠ -
개돌
2009.01.07 09:59
제가 직접 소스를 봐 드릴 수도 없는 상황이라 머라 설명드리기가 힘드네요ㅠ.ㅠ
저의 경우 /xe/common/js/xml_js/filter.js 파일에서 각종 체크 함수에 alert(); 띄워서 하나 하나 체크 하면서 수정했었습니다.
제 능력으로는 이 방법으로 오류원인 찾아서 수정하는 방법밖에 모르겠네요.. 죄송합니다 ㅠ.ㅠ -
키스더데이트
2009.01.09 06:40
1.1.4 에서.. 온통.. 에러나버리네요.. 아쉽당. ㅜㅜ'
업데이트 점 부탁드리면 안될까요.. -
박찬
2009.02.13 02:48
제대로 다 적용했는데 로그인이 안됩니다... 좀 봐주실수 있으신가요?
qkrcks4@nate 네이트 친추해주세요
혹은 qkrcks01@naver.com으로 답변 주세요
현재 저거 적용하다 안되서 기존 파일로 덮었는데 다른기능은 돌아왔으나
회원가입이 되지 않는 상태입니다.
사이트: http://www.free-down.co.kr -
thejeon
2009.02.13 13:02
하나하나 차근차근 다 바꾸어 보았습니다. 결론적으로 모두 업로드했을때는
이런 메시지가 나옵니다. 모델 php를 첨부하겠습니다.
이때 model.php를 원본으로 유지한 상태에서는 주민번호 입력란도 잘 나옵니다만
잘못된 주민번호라 뜨면서 실행이 되지 않고, 빈칸으로 둔상태에서도 회원가입이 되어버립니다.
올려주신 팁이 아주 절실히 필요해서 이렇게 도움을 요청드려봅니다.
어디가 잘못되었는지...저는 1.1.5에서 진행하고 있습니다.
참고 사이트는 pscore.org 입니다.
감사합니다~~^^ -
thejeon
2009.02.13 13:11
DB에는 임의로 제가 주민이라는 필드값을 하나 넣어봤습니다.
이렇게 하는게 맞는지 모르겠습니다.
킹왕짱 초짜입니다. 도와주세요..
제목 | 글쓴이 | 날짜 |
---|---|---|
제로보드XE XML파일 표준화 [2] | BlueGATE | 2008.11.13 |
약관 2개 만들기 [3] | WXPCM | 2008.11.15 |
히든프레임 사랑비BGM 컨트롤하기(수정완료) [6] | Pw-NET | 2008.11.16 |
회원 관리 리스트에 생일/설명/활동량 추가하기 [16] | 老姜君 | 2008.11.21 |
1.1.0으로 패치하신분들 이미 모듈이 있습니다 오류 수정 [1] | 김도훈449 | 2008.11.23 |
1.1.0 업데이트 로그인문제관련 [6] | 그냥뛰어 | 2008.11.24 |
1.1.1 패치후에 관리자 모드 접속시 에러 해결입니다. [7] | kim donggyu | 2008.11.25 |
[설문조사] 메인페이지에 넣기와 효율적으로 관리하기 [6] | 빨간발 | 2008.11.27 |
본문내용을 강재로 중앙정렬시키는 꽁수 [4] | 크르르 | 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] | 조성우371 | 2008.12.20 |
회원정보 이미지 항목 추가 [3] | 개돌 | 2008.12.22 |
메인 페이지가 백지로 나올 때 이렇게 해보세요. [4] | 시금치 | 2008.12.23 |
IIS7, PHP 5, MySQL 5, 제로보드 설치기 [1] | 54장 | 2008.12.26 |