테스트 사이트 - 개발 중인 베타 버전입니다

ajax 를 통한 회원 아이디 중복 체크 채택완료

벌써30대 6년 전 조회 6,212

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

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

아래처럼 만들었습니다.

 

id.php

</p>

<p><input type="id" id="id">

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

<p> </p>

<p><script></p>

<p>     $('#id_check').click(functio() {</p>

<p>         var reg_mb_id= $('#id').val();</p>

<p>        </p>

<p>         $.ajax({</p>

<p>             type: 'post',</p>

<p>             url: 'id_check.php',</p>

<p>             data: { reg_mb_id: reg_mb_id},</p>

<p>             success: function(data) {</p>

<p>                   alert(data);</p>

<p>             }</p>

<p>         });

     });</p>

<p></script></p>

<p>

 

id_check.php

</p>

<p>include_once('./_common.php');</p>

<p>$mb_id = trim($_POST['reg_mb_id']);</p>

<p> </p>

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

<p>$result = sql_query($strsql);</p>

<p>$num = sql_num_rows($result);</p>

<p> </p>

<p>return $num;</p>

<p>

 

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

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

 

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

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

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

 

알고 싶습니다.

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

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

답변 6개

채택된 답변
+20 포인트
6년 전

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

벌써30대
6년 전
$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 으로 출력....합니다ㅠㅠㅠㅠㅠ
벌써30대
6년 전
아! 캐시가 안날라가서 그랬던것 같습니다
샷건치고 컴 재부팅 하니까 됩니다!
감사합니다!

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

5년 전

이렇게 수정해 보세요

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/ 폴더에 있기 때문입니다.

 

로그인 후 평가할 수 있습니다

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

6년 전

$result = sql_query($strsql);

$num = sql_num_rows($result);

return $num;

부분을 

 

$row= sql_fetch($strsql);

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

 

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

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

플라이
6년 전

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

벌써30대
6년 전
아, 저건 오타 입니다!

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

잉끼s
6년 전

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

 

그리고 플라이 님 말씀대로

echo $num; 

로 쓰세요.

 

저는 

die($num);

을 선호합니다.

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

벌써30대
6년 전
0 만 계속 해서 출력..뭐가 잘못 된건지 ㅜㅜ

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

플라이
6년 전

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

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

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

로그인