ajax 를 통한 회원 아이디 중복 체크 채택완료
그누보드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개
답변에 대한 댓글 2개
샷건치고 컴 재부팅 하니까 됩니다!
감사합니다!
댓글을 작성하려면 로그인이 필요합니다.
이렇게 수정해 보세요
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 만 출력 하거나 공백을 출력 하네요...
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
sql_num_rows() 을 하시면 무조건 1만 출력해줄겁니다.
그리고 플라이 님 말씀대로
echo $num;
로 쓰세요.
저는
die($num);
을 선호합니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
$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 으로 출력....합니다ㅠㅠㅠㅠㅠ