RadarURL

조회 수 6921 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
- 라디오버튼, 변경불가 -

최종 수정일 : 2003/10/26
성별의 경우 대개가 라디오 버튼을 이용해 정보를 받게 되는데,
(이는 보편적이기도 하고 일정한 정보를 받을 수 있다는 장점과, 무엇보다 디자인이 이쁘기 때문이죠^^)
그러나...라디오 버튼의 경우 단점이 언제나 수정이 가능하다는 것입니다.
그래서 히든값으로 숨기거나 레이어를 많이 사용하게 되는데(뭐 상대가 수정하지 못하도록 숨기는 거죠.^^;),
이를 보완해서 스크립트를 이용해 회원가입시는 물론 정보수정시에도 수정이 불가능하게 해보았습니다.

자세한 설명은 팁과 같이 말씀드리기로 하고..
그럼 한번 시작해 볼까요.^_____^



우선 저의 경우는 데이터베이스에 gender라는 값을 추가하여 정보를 입력받게 하였지만,
데이터베이스를 잘 다루지 못하는 분들이 계실거라 생각해
기존의 제로보드 필드인 aol을 이용한 설명도 함께 하겠습니다.

필드추가
필드 : gender
종류 : int(1)
NULL : not null
기본값 : 1

필드추가는 텔넷이나 phpMyAdmin등을 이용하시면 가장 무난할것 같습니다.
(필드추가에 관한 설명은 유용한 팁공유 게시판을 검색해 보세요.)

*aol을 이용해 정보를 입력받으실 분은 필드추가 부분은 생략해 주세요.


부가로 필드를 추가한뒤 언인스톨뒤 다시 설치를 하실것을 대비해서 제로보드 디렉토리에 있는 schema.sql에 필드를 추가해 주시는게 좋습니다.

                birth int(13),

이 다음에 이렇게 한가지를 추가해 주세요.

                gender int(1) not null default '1',

언인스톨뒤의 재설치시에도 따로 필드를 추가하지 않으셔도 자동으로 필드를 생성합니다.
(뭐 다들 아시는 거겠지만;;;)



이제부터는 본격적으로 들어가겠습니다.
수정이 필요한 파일은 member_join.php, member_join_ok.php, member_modfiy.php, member_modify_ok.php 까지 이렇게 4가지 입니다.

세부적으로는 그외에도 몇가지 파일을 더 수정해야 하지만(사실 좀 많습니다.ㅜㅜ),
설명이 길어지기에 위의 4가지만 수정해 보도록 하겠습니다.
이것만 수정하더라도 정보를 입력받는 것에는 아무런 지장이 없기 때문이구요.^^
나머지는 여러분이 직접 해보세요.^^


먼저 member_join.php 부터

원본을 기준으로 159번째 줄

function check_id(id) {
        if(!id) {
                alert('아이디를 입력하여 주십시요');
        } else {
                window.open('check_user_id.php?user_id='+id,'check_user_id','width=200,height=100,toolbar=no,status=no,resizable=no');
        }
}

이 부분 바로 위에 아래의 스크립트를 추가해 주세요.

<? if($group[use_jumin]) { ?>
function check_jumin2() {
        var str=document.write.jumin2.value.length;
        if(str==7)
        document.write.job.focus();
}

function input_gender() {
        var temp;
        temp=document.write.jumin2.value.substring(0,1);
        if(temp==1 || temp==3) {
                document.write.gender1.checked=true;
                document.write.gender2.checked=false;
        } else {
                if(temp==2 || temp==4) {
                        document.write.gender1.checked=false;
                        document.write.gender2.checked=true;
                } else {
                        document.write.gender1.checked=false;
                        document.write.gender2.checked=false;
                }
        }
}
<? } ?>

* 저는 이부분에 생일도 함께 입력받도록 하였지만 찾아보면 좋은팁이 많기 때문에 그 부분은 빼었습니다.

스크립트를 대략 설명드리면 check_jumin2()는 7자리의 숫자가 모두 입력되었을시 포커스를 다른곳으로 옮겨주는 스크립트입니다.
저의 경우는 성별 다음에 생일을 오게 하였고 그 다음에 직업을 오게 하였는데,
생일의 경우도 마찬가지로 자동으로 입력받기 때문에 포커스를 직업으로 옮기게 한것이구요.
뭐 이 부분은 환경에 따라 수정해서 사용 하시기 바랍니다.

input_gender()는 주민 뒷7자리중 첫번째 자리의 숫자를 감지하여 성별의 라디오 버튼으로 옮겨주는 스크립트입니다.
다만 라디오버튼의 경우 보기는 좋지만, 가입시 수정이 가능한 단점을 보완 했습니다.

설명드리면 뒤의 첫자리가 1이나 3일경우 라디오 버튼의 남자부분으로 가게 하는것이고 2이거나 4일경우는 여자로 가게 합니다.
그렇지만, 수동입력을 막기 위해 처음에는 체크가 불가능 하게 하였구요.
역시 마찬가지로 주민번호로 자동입력이 되고 나서도 수정은 불가능 합니다.

여기서 aol을 이용하시는 분이시면 input_gender()를 다음과 같이 수정해 주세요.

function input_gender() {
        var temp;
        temp=document.write.jumin2.value.substring(0,1);
        if(temp==1 || temp==3) {
                document.write.aol1.checked=true;
                document.write.aol2.checked=false;
        } else {
                if(temp==2 || temp==4) {
                        document.write.aol1.checked=false;
                        document.write.aol2.checked=true;
                } else {
                        document.write.aol1.checked=false;
                        document.write.aol2.checked=false;
                }
        }
}


여기까지 하셨으면 다음으로 이동해서 227번째줄

<? if($group[use_birth]) { ?>
    <tr align=right height=28>
        <td style=font-family:Tahoma;font-size:8pt;><b>Birthday </td>
        <td align=left> <input type=text name=birth_1 size=4 maxlength=4 style=border-color:#d8b3b3 class=input> 년
             <input type=text name=birth_2 size=2 maxlength=2 style=border-color:#d8b3b3 class=input> 월
             <input type=text name=birth_3 size=2 maxlength=2 style=border-color:#d8b3b3 class=input> 일
            <input type=checkbox value=1 checked name=open_birth> 공개
    </tr>
    <tr>
        <td colspan="5" bgcolor="#EBD9D9" align="center"><img src="images/t.gif" width="10" height="1"></td>
     </tr>
<? } ?>

이 부분 바로 위에 285번째줄에 있는 주민번호 입력부분을 옮겨 주세요.
더불어 성별 입력부분을 추가해 주시면 됩니다.

<? if($group[use_jumin]) { ?>
                <tr height="62">
                    <td valign="top" bgcolor="#EBD9D9"><img src="images/t.gif" border="0" height="8"><br>  주민등록번호</td>
                    <td>
                         <input type="text" name="jumin1" size="6" maxlength="6" class="input"> - <input type="password" name="jumin2" size="7" maxlength="7" OnKeyUp="check_jumin2();" OnChange="input_gender()" class="input"><br>
                        <img src="images/t.gif" border="0" height="4"><br> * 주민등록번호는 암호화 되어 저장이 되므로 관리자도 알 수 없습니다.<br>
                           (회원 중복가입을 막기 위한 검사 수단 으로만 사용이 됩니다.)
                    </td>
                </tr>
<? } ?>
                <tr height="30">
                    <td bgcolor="#EBD9D9">  성별</td>
                    <td>
                         <input type="radio" name="gender1" value="1<?=$member[gender1]?>" OnClick="input_gender()" OnFocus="blur()"> 남
                         <input type="radio" name="gender2" value="2<?=$member[gender2]?>" OnClick="input_gender()" OnFocus="blur()"> 여
                    </td>
                </tr>

이렇게 말이죠.
주민번호 입력 부분에서 추가해 주실것은 이벤트 제어문 두가지 입니다.
OnKeyUp="check_jumin2()" 이벤트와 OnChange="input_gender()" 이벤트 이 두가지요.
OnKeyUp="check_jumin2()"는 maxlength의 숫자가 모두 입력 되었을시에 check_jumin2()를 실행해주는 이벤트 이고
OnChange="input_gender()"는 OnKeyUp 이벤트가 실행되면서 jumin2의 내용이 변경됨을 감지해 input_gender() 를 실행해 주는 이벤트 입니다.

* OnChange="input_gender()"이벤트는 절대 빠뜨리지 마세요.

aol을 사용하시는 분들은 아래의 aol을 잘라내어 위의 성별부분에 붙여넣으시고 다음과 같이 수정하시면 됩니다.

                <tr height="30">
                    <td bgcolor="#EBD9D9">  성별</td>
                    <td>
                         <input type="radio" name="aol1" value="1<?=$member[aol1]?>" OnClick="input_gender()" OnFocus="blur()"> 남
                         <input type="radio" name="aol2" value="2<?=$member[aol2]?>" OnClick="input_gender()" OnFocus="blur()"> 여
                    </td>
                </tr>

여기까지 하셨으면 member_join.php는 끝입니다. -저장,닫기-



그럼 다음은 member_join_ok.php

85번째 줄

        $birth=mktime(0,0,0,$birth_2,$birth_3,$birth_1);

이 부분 바로 위에 다음을 추가해 주세요.

        $gender = addslashes($gender1.$gender2);

aol을 사용하시는 분들은 다음을 추가해 주세요.

        $aol = addslashes($aol1.$aol2);


그다음 아래로 내려가셔서
115번째줄
        mysql_query("insert into $member_table (level,group_no,user_id,password,name,email,homepage,icq,aol,.....open_aol) values ('$group_data[join_level]','$group_data[no]','$user_id',password('$password'),'$name','$email','$homepage','$icq','$aol',.....'$open_aol')") or error("회원 데이타 입력시 에러가 발생했습니다<br>".mysql_error());

이 부분에 이렇게 gender를 추가해 줍니다.

        mysql_query("insert into $member_table (level,group_no,user_id,password,name,email,homepage,icq,aol,.....open_aol,gender) values ('$group_data[join_level]','$group_data[no]','$user_id',password('$password'),'$name','$email','$homepage','$icq','$aol',.....'$open_aol','$gender')") or error("회원 데이타 입력시 에러가 발생했습니다<br>".mysql_error());

* 이 부분은 복사해서 붙여넣기 하지 마세요.~~;;

aol을 사용하시는 분들은 이 부분은 건드리지 않으셔도 됩니다.

여기까지 하셨으면 member_join_ok.php는 끝~
이로서 가입페이지는 모두 수정하였습니다. -저장,닫기-



그럼 정보수정 페이지로 들어가겠습니다.

먼저 member_modify.php를 여시고
21번째 줄

        $member[name] = stripslashes($member[name]);

이 다음에 다음의 소스를 추가해 주세요.

        $member[gender] = stripslashes($member[gender]);

aol을 사용하시는 분들은 다음을 추가해 주세요.

        $member[aol] = stripslashes($member[aol]);


그 다음에 100번째 줄을 보시면

</script>

이 바로 위 공백에 다음의 스크립트를 추가해 주세요.

function input_gender() {
        var checked;
        checked=document.write.gender.value.substring(0,1);
        if(checked==1) {
                document.write.gender1.checked=true;
                document.write.gender2.checked=false;
        } else {
                if(checked==2) {
                        document.write.gender1.checked=false;
                        document.write.gender2.checked=true;
                }
        }
}

aol을 사용하시는 분들은 이 부분을 이렇게 수정하시면 됩니다.

function input_gender() {
        var checked;
        checked=document.write.aol.value.substring(0,1);
        if(checked==1) {
                document.write.aol1.checked=true;
                document.write.aol2.checked=false;
        } else {
                if(checked==2) {
                        document.write.aol1.checked=false;
                        document.write.aol2.checked=true;
                }
        }
}

그럼 스크립트를 대충 설명드리겠습니다.

먼저번 member_join.php에서의 스크립트는 주민번호를 이용해서 정보를 받고 체크여부를 결정지었던 데 반해
여기서의 스크립트는 이미 입력되어 있는 성별 정보를 이용해 체크여부를 결정합니다.
다 아시다 시피 주민번호는 매우 신뢰할 수 있기 때문에 이용하기가 용이 하지만,
일단 데이터베이스에 저장이 될때에는 암호화 되어 더이상은 사용할 수 없는 점 때문이구요.

세부적인 설명은 위에 말씀드렸던 설명과 같습니다.
이미 체크가 되어있는 상태에서 절대 다른곳으로 포커스가 옮겨지지 못하도록 한 스크립트 입니다.




그럼 다음 103번줄에
<form name=write method=post action=member_modify_ok.php enctype=multipart/form-data onsubmit="return check_submit();">
<input type=hidden name=one_page value="<?=$HTTP_REFERER?>">
<input type=hidden name=page value=<?=$page?>>
<input type=hidden name=id value=<?=$id?>>
<input type=hidden name=no value=<?=$no?>>
<input type=hidden name=select_arrange value=<?=$select_arrange?>>
<input type=hidden name=desc value=<?=$desc?>>
<input type=hidden name=page_num value=<?=$page_num?>>
<input type=hidden name=keyword value="<?=$keyword?>">
<input type=hidden name=category value="<?=$category?>">
<input type=hidden name=sn value="<?=$sn?>">
<input type=hidden name=ss value="<?=$ss?>">
<input type=hidden name=sc value="<?=$sc?>">
<input type=hidden name=referer value="<?=$referer?>">

이 부분 다음에 아래의 hidden값 한가지를 더 추가해 주세요.

<input type="hidden" name="gender" value="<?=$member[gender]?>">

aol을 사용하시는 분들은 이렇게 수정해 주세요.

<input type="hidden" name="aol" value="<?=$member[aol]?>">

db에 저장되어 있는 성별의 정보를 불러오기 위해 hidden값을 사용하게 되었습니다.




그럼 좀 더 아래로 내려가셔서.. 147번째 줄

<? if($group_data[use_birth]) { ?>
    <tr height=28 align=right>
     <td style=font-family:Tahoma;font-size:8pt;><b>Birthday </td>
     <td align=left> <input type=text name=birth_1 size=4 maxlength=4 value="<?=date("Y",$member[birth])?>" style=border-color:#d8b3b3 class=input> 년
                     <input type=text name=birth_2 size=2 maxlength=2 value="<?=date("m",$member[birth])?>" style=border-color:#d8b3b3 class=input> 월
                     <input type=text name=birth_3 size=2 maxlength=2 value="<?=date("d",$member[birth])?>" style=border-color:#d8b3b3 class=input> 일
          <input type=checkbox value=1 name=open_birth <?=$check[$member[open_birth]]?>> 공개
    </tr>
    <tr>
          <td colspan="5" bgcolor="#EBD9D9" align="center"><img src="images/t.gif" width="10" height="1"></td>
    </tr>
<? } ?>

이 부분 바로 위에 다음을 추가해 주세요.

                <tr height="30">
                    <td bgcolor="#EBD9D9">  성별</td>
                    <td>
                         <input type="radio" name="gender1" value="1" OnFocus="blur()" OnClick="input_gender()" <? if($member[gender]=="1") echo "checked"; ?>> 남
                         <input type="radio" name="gender2" value="2" OnFocus="blur()" OnClick="input_gender()" <? if($member[gender]=="2") echo "checked"; ?>> 여
                    </td>
                </tr>

라디오 버튼으로 정보를 받고 나서 보여지는 페이지는 보통의 경우 text <input>으로 보여지게 하는데,
이를 역시 라디오 버튼으로 보여지게 하기 위해서 약간?의 머리를 짜내어 보았습니다.;;

aol을 사용하시는 분들은 185번째 줄의

<? if($group_data[use_aol]) { ?>
  <tr height=28 align=right>
     <td style=font-family:Tahoma;font-size:8pt;>AIM </td>
     <td align=left> <input type=text name=aol size=20 maxlength=30 value="<?=$member[aol]?>" style=border-color:#d8b3b3 class=input>
                          <input type=checkbox value=1 name=open_aol <?=$check[$member[open_aol]]?>> 공개</td>
  </tr>        <tr>
          <td colspan="5" bgcolor="#EBD9D9" align="center"><img src="images/t.gif" width="10" height="1"></td>
        </tr>
<? } ?>

이 부분을 잘라내어서 146번째 줄로 이동시키시고 다음과 같이 수정해 주세요.

                <tr height="30">
                    <td bgcolor="#EBD9D9">  성별</td>
                    <td>
                         <input type="radio" name="aol1" value="1" OnFocus="blur()" OnClick="input_gender()" <? if($member[aol]=="1") echo "checked"; ?>> 남
                         <input type="radio" name="aol2" value="2" OnFocus="blur()" OnClick="input_gender()" <? if($member[aol]=="2") echo "checked"; ?>> 여
                    </td>
                </tr>

여기까지하셨으면 member_modify.php는 끝입니다. -저장,닫기-



그럼 이제 마지막...member_modify_ok.php를 여시고

26번째 줄

        $name = addslashes($name);

이 다음에 다음의 소스를 추가해 주세요.

        $gender = addslashes($gender1.$gender2);

aol을 사용하시는 분들은 다음을 추가해 주세요.

        $aol = addslashes($aol1.$aol2);

이 부분은 수정시 정보를 데이터베이스로 옮길때 필요한 부가적인 소스입니다.


그럼 다음은 43번째 줄

        $que="update $member_table set name='$name'";

이 다음에 한가지를 추가해 주세요.

        if($gender1&&$gender2) $que.=",gender='$gender'";

aol을 이용하시는 분들은 51번째 줄의 aol을 다음과 같이 수정해 주세요.

        if($aol1&&$aol2) $que.=",aol='$aol'";

이 부분은 이미 저장되어 있는 데이터베이스의 정보를 불러오는 소스입니다.
여기까지 입니다.-저장,닫기-



이 외에 관리자 페이지나 쪽지등등.. 여러가지가 더 있지만,
원하시는 분들은 한번 시도해 보시구요.

해 보셨는데 오류가 나신다면 처음부터 다시 차근차근 밟아 보세요.
위의 소스를 먼저 그대로 받아서 처리해 보시고 성공하신다면 그 다음에 환경에 맞게 수정하는것 잊지 마시구요.^^

그럼 모두들 좋은 하루 되십쇼..^^

출처 : http://www.nzeo.com/bbs/zboard.php?id=cgi_tip&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=성별&select_arrange=headnum&desc=asc&no=4873
?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 927885
46 웹 프로그래밍 제로보드에서 그룹별 현재접속자 출력과 특정인 제외하기 처누 2004.06.01 6257
» 웹 프로그래밍 제로보드에서 회원가입시 주민번호를 이용해 성별을 받아보자. 처누 2004.05.26 6921
44 웹 프로그래밍 제로보드에서 주민등록입력시 생일자동입력하기 처누 2004.05.26 7147
43 웹 프로그래밍 1개의 DB에 두개의 제로보드 설치하기 처누 2004.05.24 6865
42 기타 소주에대해 알고 마십시다! file JaeSoo 2004.05.24 6131
41 웹 프로그래밍 제로보드 첨부파일 마다 설명 달수 있는 사진 게시판 만들기 처누 2004.05.20 11301
40 연애 연인을 감동시키는 말 한마디 처누 2004.05.12 8618
39 윈도우즈 싸써웜 같은 RPC Attack Filter 정책 적용하기 file 처누 2004.05.12 7274
38 윈도우즈 마우스로 끄는 동안 창의 내용을 보이기 처누 2004.05.10 8206
37 하드웨어 컴퓨터와 전기료 (한달 627원) 처누 2004.05.07 6548
36 기타 생활에 유용한 잔지식들.. JaeSoo 2004.05.01 6078
35 하드웨어 HDD를 많이 장착하고 싶을때 유용한 케이스 1 처누 2004.04.28 8034
34 하드웨어 PC를 위한 전원공급장치(파워서플라이)의 선택요령 처누 2004.04.23 6175
33 데이터베이스 mySQL에서 사용자와 권한 처누 2004.04.16 7932
32 윈도우즈 svchost.exe에 대하여.. file 처누 2004.04.15 6999
31 윈도우즈 윈도우즈에서 돌아가는 default process들... 처누 2004.04.15 6089
30 윈도우즈 IIS SMTP를 설치했으나 IIS 관리자에서 보이지 않는다. 처누 2004.03.13 7262
29 윈도우즈 MSN 메신저에 저장되어 있는 passport 계정 정보를 없애는 팁 처누 2004.03.13 8981
28 윈도우즈 질문~ 인터넷 창의 무한 오픈.. -.- 2 진구 2004.01.25 8544
27 웹 프로그래밍 제로보드 첨부파일 더 늘리기 (2개에서 4개로) 처누 2003.12.10 10298
Board Pagination Prev 1 ... 115 116 117 118 119 120 121 122 123 124 Next
/ 124


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너