채택완료

ajax 를 통한 회원 아이디 중복 체크

그누보드5에서 자동으로 지원 하는것 외에

중복체크 버튼으로 아이디를 중복 체크 하기 위해 

아래처럼 만들었습니다.

 

id.php

Copy
<input type="id" id="id">
<span id="id_check">중복확인</span>

 

<script>

     $('#id_check').click(functio() {

         var reg_mb_id= $('#id').val();

        

         $.ajax({

             type: 'post',

             url: 'id_check.php',

             data: { reg_mb_id: reg_mb_id},

             success: function(data) {

                   alert(data);

             }

         });
     });

</script>

 

id_check.php

Copy
include_once('./_common.php');

$mb_id = trim($_POST['reg_mb_id']);

 

$strsql = "SELECT count(*) as cnt FROM g5_member WHERE mb_id = '$mb_id'";

$result = sql_query($strsql);

$num = sql_num_rows($result);

 

return $num;

 

id.php 에서 id_check.php 로 아이디 값을 보내 검색 된 값을 받아오는 것으로 했는데요.

공백만 받아와 경고창으로 띄워 주거나 작동을 하지 않습니다.

 

1. 제가 ajax를 제대로 사용 하고 있는지?

2. ajax는 작동 하지만 왜 공백값만 받아 오는지?

3. 전체적으로 손볼곳이 있는지?

 

알고 싶습니다.

자료가 부족하다면 말씀해주세요! 바로 보충 하도록 하겠습니다.

답변 6개 / 댓글 6개

채택된 답변
+20 포인트

$result = sql_fetch($strsql); 로 해보세요 잘못적었네요

답변에 대한 댓글 2개

$strsql = "SELECT count(*) as cnt FROM g5_member WHERE mb_id = '$mb_id'";
$result = sql_fetch($strsql);

말씀 해주신대로 수정 하여

$mb_id = trim($_POST['reg_mb_id']);

$strsql = "SELECT count(*) as cnt FROM g5_member WHERE mb_id = '$mb_id'";
$result = sql_fetch($strsql);

echo $result['cnt'];

중복된 아이디/새로운 아이디도 모두 0 으로 출력....합니다ㅠㅠㅠㅠㅠ
아! 캐시가 안날라가서 그랬던것 같습니다
샷건치고 컴 재부팅 하니까 됩니다!
감사합니다!

이렇게 수정해 보세요

1.id.php

<input type="text" name="mb_id" id="id">

<span id="id_check">중복확인</span>

<script>
     $('#id_check').click(function() {
         var reg_mb_id= $('#id').val();
         $.ajax({
             type: 'post',
             url: './id_check.php',
             data: { reg_mb_id: reg_mb_id},
             success: function(data) {
                var gubun = data.substr(0,1);
                var reg_mbid = data.substr(2,12);

                if (gubun == 'Y') {
                   alert("동일한 아이디가 존재합니다. 다른 아이디를 입력해주세요.");
                   $("#id").focus();
                } else {
                   if(reg_mbid == "" || reg_mbid.length < 3) {
                      alert("정상적인 아이디를 입력해 주시기 바랍니다.");
                      $("#id").focus();
                   } else {
                      alert("사용가능한 아이디입니다.");
                      $("#reg_mb_password").focus();
                   }
                }
             }
         });
     });
</script>

 

2. /bbs/id_check.php

include_once('./_common.php');

$mb_id = trim($_POST['reg_mb_id']);

$sql = "SELECT mb_id FROM {$g5['member_table']} WHERE mb_id = '{$mb_id}'";
$row = sql_fetch($sql);
if ($row['mb_id']) {
    echo $reg_data = 'Y'. '/' .$row['mb_id'];    
} else {
    echo $reg_data = 'N'. '/' .$mb_id;    
}

 

3.주의 하실점

- ajax 사용시 id_check.php 파일은 /bbs/폴더에 위치해 놓으셔야 합니다.

이유는 회원가입시 register_form.php 파일이 /bbs/ 폴더에 있기 때문입니다.

 

$result = sql_query($strsql);

$num = sql_num_rows($result);

return $num;

부분을 

 

$row= sql_fetch($strsql);

echo $row['cnt'] 로 변경해보세요

 

지금 하신건 sql_num_rows는 결과 수니 카운트를 하시는거니 항상 결과가 있어서 참일겁니다.

답변에 대한 댓글 1개

말씀해주신대로 해보았지만 여전히 똑같은 반응 입니다..
1 만 출력 하거나 공백을 출력 하네요...

$nums의 데이터가 없고 $num으로 해보시면 찍히실텐데요

답변에 대한 댓글 1개

아, 저건 오타 입니다!

sql_num_rows() 을 하시면 무조건 1만 출력해줄겁니다.

 

그리고 플라이 님 말씀대로

echo $num; 

로 쓰세요.

 

저는 

die($num);

을 선호합니다.

 

답변에 대한 댓글 1개

0 만 계속 해서 출력..뭐가 잘못 된건지 ㅜㅜ

ajax는 return으로 찍기보다는 echo로 찍어서 처리해 주시면 됩니다.

답변에 대한 댓글 1개

말씀해주신대로 id_check.php 단 에서 echo $nums; 로 보내게 되면 id.php 에서는
중복된 아이디가 있음에도 alert(data) 가 공백으로만 경고창이 뜹니다.

답변을 작성하려면 로그인이 필요합니다.