본문 바로가기
IT/PHP

7##]PHP로 홈페이지 만들기>회원가입 중복확인

by 혁이 2017. 4. 21.
반응형




안녕하세요 이번엔 홈페이지 회원가입 중복확인을 해볼게요


회원가입하는것 중에 반드시 필요한 중복확인이죠

바로 소스 들어갑니다.

일단

join.php에서 코드를 추가해줍니다



join.php 

 


<script>
 function chid(){
  
  document.getElementById("chk_id2").value=0;
  var id=document.getElementById("chk_id1").value;
  
  if(id==""){
  alert("빈칸 안되요!");
  exit;
  }
  
  ifrm1.location.href="join_chk.php?userid="+id; 
 }

</script>

<html>
 <head>
 <title>Join!</title>
 </head>
 
 <body>
 <center>
 <form action=join_ok.php method=post name=frmjoin>
 <table cellpadding=2 cellspacing=2>
 <tr>
  <td colspan=2 align=center><b> 회 &nbsp;원&nbsp; 가 &nbsp;입</td></b>
 </tr>
 <tr> 
  <td align=center>ID</td>
  <td><input type=text name=joinid maxlength=15 id="chk_id1">&nbsp;&nbsp;
   <input type=button value="중복검사" onclick=chid()></td>
   <input type=hidden id="chk_id2" name=chk_id2 value="0">
 </tr>
 <tr> 
  <td align=center>비밀번호</td>
  <td><input type=password name=joinpw maxlength=20></td>
 </tr>
 <tr>
  <td align=center>비밀번호 확인</td>
  <td><input type=password name=joinpw2 maxlength=20></td>
 </tr>
 <tr>
  <td align=center> E-Mail</td>
  <td><input type=text name=joinemail maxlength=30></td>
 </tr>
 <tr> <td colspan=2 align=center><input type=submit value="가입하기">&nbsp;&nbsp;
  <input type=reset value="다시작성">&nbsp;&nbsp;
  <input type=button value="취소" onclick="history.back();">
 </td>
 </tr>
 </table>
 </form>
  <iframe src="" id="ifrm1" scrolling=no frameborder=no width=0 height=0 name="ifrm1"></iframe>
 </body>
</html>




join.php에서 붉은색 부분만 추가하면 됩니다.


1.중복검사 버튼

   <input type=button value="중복검사" onclick=chid()></td>
   <input type=hidden id="chk_id2" name=chk_id2 value="0">

중복검사 버튼을 클릭하면 chid()라는 함수를 실행합니다.
hidden은 중복검사를 실행했는지, 안했는지를 판단하는 bool변수라고 생각하시면 됩니다.



2.iframe 으로 중복검사하는 페이지 만들기.

<iframe src="" id="ifrm1" scrolling=no frameborder=no width=0 height=0 name="ifrm1"></iframe>

기본 페이지는 없음, 스크롤 없음, 경계없음 넓이,높이 0으로 해서

눈에 안보이는 iframe을 만들어줍니다. 여기에 중복검사페이지를 불러서 중복

검사를 하게됩니다.



3.chid()함수

아까 중복검사 버튼을 누르면 chid()함수를 불렀었죠??

그 함수가 뭔지 봅시다.

<script>
 function chid(){
  
  document.getElementById("chk_id2").value=0;
  var id=document.getElementById("chk_id1").value;
  
  if(id==""){
  alert("빈칸 안되요!");
  exit;
  }
  
  ifrm1.location.href="join_chk.php?userid="+id; 
 }

</script>


일단 bool변수의 값을 0으로 초기화 해줍니다.

그리고 중복검사할 id값을 받아서 변수id에 저장합니다.

그리고 받아온 변수를 iframe으로 띄울 join_chk.php라는 페이지에 GET방식으로

보냅니다.

이제 join_chk.php라는 페이지를 분석해봅시다!

-----------------------------join_chk.php


<?
 include "/var/www/html/db_info.php";

 $id=$_GET['userid'];
 
 $query="select count(*) from member where logid='$id'";
 $result=mysql_query($query,$conn);
 $row=mysql_fetch_array($result);
 

 mysql_close($conn);

?>
<script>
 var row="<?=$row[0]?>";
 if(row==1){
 parent.document.getElementById("chk_id2").value="0";
 parent.alert("이미 사용중인 아이디입니다.");
 }
 else{
 parent.document.getElementById("chk_id2").value="1";
 parent.alert("사용 가능합니다.");
 }
</script>

 --------------------------------------------------------
 
include "/var/www/html/db_info.php";
DB를 열어주는 페이지 db_info.php를 include해줍니다.

 $id=$_GET['userid'];
GET으로 보낸 userid라는 인자를 id로받아줍니다.


 $query="select count(*) from member where logid='$id'";
 $result=mysql_query($query,$conn);
 $row=mysql_fetch_array($result);

 mysql_close($conn);
DB에서 logid필드에서 받아온 id값과 같은 컬럼의 갯수를 세는 쿼리를 만들어
실행합니다.

결과로 나온값을 배열로바꾸어 $row변수에 저장하고 열었던 DBCONNECT를
닫아줍니다.



<script>
 var row="<?=$row[0]?>";
 if(row==1){
 parent.document.getElementById("chk_id2").value="0";
 parent.alert("이미 사용중인 아이디입니다.");
 }
 else{
 parent.document.getElementById("chk_id2").value="1";
 parent.alert("사용 가능합니다.");
 }
</script>

row라는 변수에 php $row변수의 첫번째 값을 저장합니다.

컬럼의 갯수를 센것이기 때문에 같은값이 있으면 1 없으면 0이 됩니다.

있다면 bool변수를 0으로 바꿔주고 iframe의 부모 페이지인 join.php에 alert를

날려줍니다 이미 사용중이라고..

없다면 bool변수를 1로 바꿔주고 사용가능하다고 alert해줍니다.


이로써 중복검사 페이지를완성했습니다.

MintOS 랑 CentOS랑 다른게 있어서 한참 고생했네요 부들부들...


반응형