[제로] 회원가입시 아이디체크 (중복, 필터링, 검색, 사용시 입력창으로..)

페이지 정보

루루아빠 3,346 2005.07.07 18:19

첨부파일

평점

  • 평점 : 0점 (0명 참여)

본문

제로보드의 좋은기능을 살려서 회원가입시의 아이디체크창과 시스템을 좀 더 멋지게 꾸며 볼까 합니다.

꾸미는데 필요한 파일은 check_user_id.php, member_join.php, member_join_ok.php 이 3개의 파일과 별도로 script_check_id.php 총 4개의 파일이 필요하게 됩니다.

자..준비 되셨으면 지금부터 시작합니다.~~

 

그럼 check_user_id.php를 여시고 원본을 기준으로..
9번줄부터
<?
         include "lib.php";
         $user_id = trim($user_id);
         $connect=dbconn();
         $check=mysql_fetch_array(mysql_query("select count(*) from $member_table where user_id='$user_id'"));
         mysql_close($connect);
         head();
 ?>
이 다음줄에 아래의 스크립트를 삽입해 주세요.

 <script language="JavaScript">
 <!--
function use_id() {       
         opener.write.user_id.value='<?=$user_id?>';
         self.close();
 }

 function check_submit() {
         if(!write.user_id.value) {
                 alert("아이디를 입력하여 주십시오.");
                 write.user_id.focus();
                 return false;
         }
 <? include "script/script_check_id.php"; ?>

         return true;
 }
 -->
 </script>

 use_id()는 사용가능한 아이디를 회원가입창으로 재전송해주는 스크립트이고,
check_submit()은 다들 아시겠지만 검색버튼을 클릭했을때 벌어지는 이벤트에 관한 스크립트 입니다.

다음 9번줄..
 <table border=0 width=100% height=100%>
아래에 다음의 폼태그를 적어주세요.

 <form name="write" method="post" enctype="multipart/form-data" OnSubmit="return check_submit();">

이 폼태그는 사용가능한 아이디를 회원가입창으로 전송하고 아이디 검색시에 벌어지는 이벤트를 제어하는 기능을 합니다.
 * 이 폼태그를 적어주셨으면 하단부의 <form> 이것은 지워 주세요.

그다음 12번줄..
 <?
         if($check[0]) echo "$user_id 는 이미 등록된<br> 아이디입니다";
         else echo"$user_id 는 사용하실수 있습니다";
 ?>
이 부분을 아래와 같이 수정해 주세요.

 <?
         $array = array("root", "admin", "master", "aaaa", "bbbb", "cccc", "dddd", "eeee", "ffff", "gggg", "hhhh", "iiii", "jjjj", "kkkk", "llll", "mmmm", "nnnn", "oooo", "pppp", "qqqq", "rrrr", "ssss", "tttt", "uuuu", "vvvv", "wwww", "xxxx", "yyyy", "zzzz");
         for($i=0;$i<count($array);$i++)
         eregi($array[$i], $user_id, $reg);

         if($reg) {
                 echo "
             <font color=red><b>사용할 수 없는 아이디(ID)입니다.</b></font><br><br>
             <b>$user_id</b>(은)는 사용이 금지된<br>
             아이디(ID)입니다.";
         } elseif($check[0]) {
                 echo "
             <font color=red><b>사용할 수 없는 아이디(ID)입니다.</b></font><br><br>
             <b>$user_id</b>(은)는 이미 사용중인<br>
             아이디(ID)입니다.";
         } else {
                 echo "
             <b>$user_id</b>(은)는 사용하실 수 있습니다.<br><br>
             <input type='button' name='write' value='사용하기' OnClick='use_id()'>";
         }
 ?>

대충 설명드리면 불량단어와 같은문자열의 반복, 즉 4자 이상 40자 이하 같은 문자열로 반복된 아이디와 이미 등록된 아이디, 또 root, admin, master와 같은 불량 단어는 사용이 불가능한 반면,
사용가능한 아이디는 input 버튼을 이용해 클릭시 회원가입창으로 아이디를 전송해 줍니다.

불량 단어는 위에서 추가해 주시면 되지만,
그렇다고 한글로된 단어나 4자리 이하의 영문, 또 특수문자등을 불량단어로 등록하지는 마시구요.;;
어짜피 영문이 아닌 다른 문자와 4자리 이하의 문자는 스크립트로 원천봉쇄 됩니다.

그럼 다음으로 넘어가서.. 21번줄
        <td align=center><input type=button value='Close window' onclick=window.close(); class=submit></td>
이 부분을 아래와 같이 수정해 주세요.

         <td align="center">
             <input type="text" name="user_id" size="16" value="">
             <input type="submit" value="검색">
             <input type="button" value="닫기" OnClick="window.close();" OnFocus="this.blur()">
         </td>

이 부분은 보시는 바와 같이 아이디 검색폼입니다.

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

 

다음은 script_check_id.php를 한번 만들어 볼까요.

메모장으로 새파일을 하나 만드시고 여기에 다음과 같이 스크립트를 적어주세요.

         if(write.user_id.value.length<4 || write.user_id.value.length>40) {
                 alert("아이디는 4자 이상, 40자 이하여야 합니다.");
                 write.user_id.focus();
                 return false;
         }

         var valid = "abcdefghijklmnopqrstuvwxyz0123456789_";
         var startChar = "abcdefghijklmnopqrstuvwxyz";
         var temp;
         write.user_id.value = write.user_id.value.toLowerCase();
         temp = write.user_id.value.substring(0,1);
         if (startChar.indexOf(temp) == "-1") {
                 alert("아이디의 첫 글자는 영문이어야 합니다.");
                 write.user_id.value = "";
                 write.user_id.focus();
                 return false;
         }

         for (var i=0; i<write.user_id.value.length; i++) {
         temp = "" + write.user_id.value.substring(i, i+1);
                 if (valid.indexOf(temp) == "-1") {
                         alert("아이디는 영문과 숫자, _ 로만 이루어질수 있습니다.");
                         write.user_id.value = "";
                         write.user_id.focus();
                         return false;
                 }
         }

이 스크립트는 원래 member_join.php에서 사용하는 스크립트 입니다.
보다 체크를 강조하려다 보니 본의아니게도 이 스크립트가 3번이나 반복되는것 때문에
 편의상 그 부분만 따로 include 시키기 위해서 잘라 내었습니다.

여기까지 하셨으면 이름을 script_check_id.php 고친다음 저장해 주세요.
저장은 제로보드 디렉토리 안에 있는 script디렉토리에 해주시면 됩니다.-저장,닫기-

 

이번에는 member_join.php를 열어주세요.
85번줄 부터 119번줄까지..
         if(!write.user_id.value) {alert("아이디를 입력하여 주십시요.");write.user_id.focus(); return false;}

 <?
         if($_zbDefaultSetup[enable_hangul_id]=="false") {
 ?>

         // ID Check
         if(write.user_id.value.length<4||write.user_id.value.length>40) {
                 alert("아이디는 4자 이상, 40자 이하여야 합니다.");
                 write.user_id.focus();
                 return false;
         }
         var valid = "abcdefghijklmnopqrstuvwxyz0123456789_";
         var startChar = "abcdefghijklmnopqrstuvwxyz";
         var temp;
         write.user_id.value = write.user_id.value.toLowerCase();
         temp = write.user_id.value.substring(0,1);
         if (startChar.indexOf(temp) == "-1") {
                 alert("아이디의 첫 글자는 영문이어야 합니다.");
                 write.user_id.value = "";
                 write.user_id.focus();
                 return false;
         }
         for (var i=0; i<write.user_id.value.length; i++) {
                 temp = "" + write.user_id.value.substring(i, i+1);
                 if (valid.indexOf(temp) == "-1") {
                         alert("아이디는 영문과 숫자, _ 로만 이루어질수 있습니다.");
                         write.user_id.value = "";
                         write.user_id.focus();
                         return false;
                 }
         }
 <?
         }
 ?>
이 부분을 다음과 같이 수정해 주세요.

         if(!write.user_id.value) {
                 alert("아이디를 입력하여 주십시오.");
                 write.user_id.focus();
                 return false;
         }

 <?
         if($_zbDefaultSetup[enable_hangul_id]=="false") {
                 include "script/script_check_id.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');
         }
 }
이 부분을 다음과 같이 수정해 주세요.


function check_id(id) {
         if(!id) {
                 alert("아이디를 입력하여 주십시오.");
                 write.user_id.focus();
                 return false;
         }
 <? include "script/script_check_id.php"; ?>

         window.open('check_user_id.php?user_id='+id,'check_user_id','width=330,height=230,toolbar=no,status=no,resizable=no');
 }


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

 

그럼 마지막으로 member_join_ok.php를 수정해 볼까요.~
44번줄..
         $user_id=trim($user_id);
         if(isBlank($user_id)) Error("ID를 입력하셔야 합니다","");

         $check=mysql_fetch_array(mysql_query("select count(*) from $member_table where user_id='$user_id'",$connect));
         if($check[0]>0) Error("이미 등록되어 있는 ID입니다","");

이 부분을 아래와 같이 수정해 주세요.


         $user_id=trim($user_id);
         if(isBlank($user_id)) Error("아이디(ID)를 입력하셔야 합니다.","");

         $array = array("root", "admin", "master", "aaaa", "bbbb", "cccc", "dddd", "eeee", "ffff", "gggg", "hhhh", "iiii", "jjjj", "kkkk", "llll", "mmmm", "nnnn", "oooo", "pppp", "qqqq", "rrrr", "ssss", "tttt", "uuuu", "vvvv", "wwww", "xxxx", "yyyy", "zzzz");
         for($i=0;$i<count($array);$i++) {
                 if(eregi($array[$i], $user_id, $reg)) {
                         Error("<b>$user_id</b>(은)는 사용이 금지된<br>아이디(ID)입니다.","");
                         break;
                 }
         }

         $check=mysql_fetch_array(mysql_query("select count(*) from $member_table where user_id='$user_id'",$connect));
         if($check[0]>0) Error("<b>$user_id</b>(은)는 이미 사용중인<br>아이디(ID)입니다.","");


이 부분은 아이디체크를 하지 않고 회원가입을 할 시에 빈문자열과 불량아이디(관리자 사칭 아이디, 4자 이상의 반복된 단어의 아이디등등),또는 중복된 아이디를 걸러내기 위한 소스입니다.

 * 참고로 4자 이상의 단어에서 aaaa,aaaad,daaaa,aaaaaaaaaaaaaaaaaa등과 같은 단어들은 절대 가입이 허용되지 않습니다.

여기까지...-저장,닫기-


먼길 오시느라 수고들 많으셨습니다.
지친몸 잘 추스리시고;; 여러분들 만의 멋진 제로보드를 만들어 나가시기 바라겠습니다.
정보가 마음에 드시면 추천한방 부탁드리구요.

 

 * 한가지 빠뜨린거...;

체크창이 떴을때 커서가 검색폼으로 올라가게 해주기 위해서 check_user_id.php에 한가지를 더 추가해 주세요.

 <body leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 OnLoad="document.write.user_id.focus();">

 OnLoad를 이용한 커서제어 방법입니다.

위치는 아무래도 미각상 </script> 다음이 좋을듯 하겠죠.

추천인
  • 추천해 주세요
6
루루아빠 - 회원등급 : 최고관리자 - 포인트 : 1,290,807
레벨 96
경험치 1,389,159

Progress Bar 74%

- 가입일 : 2015-03-04 03:24:54
- 서명 : KNOW YOUR LIMITS BUT NEVER STOP TRYING TO EXCEED THEM !!
- 자기소개 : 루루의 자랑 루루아빠랍니다~~

댓글

첫 번째 댓글을 남겨 주세요

Total 7473638 페이지
제목 글쓴이 날짜 조회 추천
제로  🏆 동영상(음악,뮤비,플래쉬) 업로드시 자동실행법 루루아빠 2005.07.08 2,312 0
제로  🏆 🚩 회원가입시 아이디체크 (중복, 필터링, 검색, 사용시 입력창으로..) 루루아빠 2005.07.07 3,347 0
제로  댓글+1🏆 서버OS가 WindowsNT일경우 가입폼에서 메일체크 에러방지 루루아빠 2005.07.07 2,368 0
제로  🏆 공지사항 체크를 빼면 제위치로 가지 않는 문제의 해결점 루루아빠 2005.07.07 2,315 0
제로  🏆 태그 사용 체크 후 "취소" 하면 자동으로 체크 해제 루루아빠 2005.07.05 2,479 0
제로  🏆 💾 등록실패 방지 (글 등록 실패로 인한 글날림 방지) 루루아빠 2005.07.05 2,459 0
제로  🏆 특정 회원(예:운영자) 이 접속자목록에 안나오게하기 루루아빠 2005.07.05 2,312 0
제로  댓글+1🔒 게시물 작성자가 현재 접속여부표시하기 루루아빠 2005.07.05 25 0
제로  🏆 비회원은 회원정보 보지 못하게 루루아빠 2005.07.04 2,111 0
제로  댓글+1🏆 최근게시물 공지사항 첫번째 글에도 링크걸기 루루아빠 2005.07.03 2,226 0
제로  댓글+1🏆 수정된 정보를 제대로 보여주기 루루아빠 2005.07.03 2,217 0
제로  댓글+1🔒 💾 멀티갤러리 통합추출 팁 루루아빠 2005.06.27 30 0
제로  🔒 멀티게시판 코멘트 통합추출 팁 루루아빠 2005.06.27 17 0
제로  🔒 [re] 진보된 추출법 루루아빠 2005.06.27 4 0
제로  댓글+1🔒 여러 게시판의 최근글 통합해서 뽑아내기 루루아빠 2005.06.27 24 0
제로  🏆 [re] 조금더 전문적인 사용법 루루아빠 2005.06.27 2,294 0
기타  🔒 링크 타겟 새로운 창으로 열때 가운데 정렬해서 원하는 사이즈로 열기 루루아빠 2005.06.25 17 0
제로  🏆 최근 게시물보기 속도 빠르게 만들기 루루아빠 2005.06.24 2,661 0
제로  🏆 첨부파일 이미지 업로드시 미리보기 및 수정시 이미지 미리보기 루루아빠 2005.06.24 3,140 0
제로  🏆 글, 링크 이미지, 업로드 이미지 모두 가운데 정렬하기 루루아빠 2005.06.24 2,748 0