회원가입 에러
본문
중문 사이트라...보기 힘드실수도 있어요... 오른쪽 상단 부분에 회원가입 있고
회원가입 화면입니다.
위에서 부터
아이디,비밀번호 ,비밀번호 확인,이름,닉네임,이메일,메일수신동의체크박스
이런식인데요
자꾸 에러가 뜨는데..에러 메세지가 안나옵니다 ㅠㅠ
자동 입력 방지 때문에 그런 건가 해서 자동 입력 방지를 아예 없앴는데도
계속 그러네요 ..ㅠㅠ 필요한 소스나 필요 하신거 있으면 말씀해주세요..
제발 도와주세요 .. 정말 모르곘습니다..
회원ID 를 체크하는 ajax 를 확인해 보시기 바랍니다.
http://www.kohitwedding.cn/bbs/ajax.mb_id.php 에 reg_mb_id=test 를
post 로 보냈을 때, return 값을 확인해 보세요..
마스타님 께서 주신 답변인데 무슨 말인지 잘 모르겠습니다..
어떤부분을 어떻게 고쳐야 할까요..
ID값이 안넘어와서 그런건가요
답변 5
function fregisterform_submit(f)
{
// 회원아이디 검사
if (f.w.value == "") {
var msg = reg_mb_id_check();
if (msg) {
alert(msg);
f.mb_id.select();
return false;
}
}
부분에서 msg값이 개발자도구로 체크해본결과
빈 공백의 문자열이 msg에 넘어옵니다.
즉, 저부분에서 빈공백의 문자열이 넘어오기때문에 계속 alert메시지를 뿌리는 거네요.
회원가입 폼에서 F12(개발자도구)를 펼쳐 보시면...
jquery 오류가 나옵니다.
$("textarea#wr_content[maxlength]").live("keyup change", function() {
var str = $(this).val()
var mx = parseInt($(this).attr("maxlength"))
if (str.length > mx) {
$(this).val(str.substr(0, mx));
return false;
}
});
jquery 버전문제거나 IE버전등의 문제일수도 있고....
짐작하면... 저 jquery 문제로 회원아이디를 ajax로 체크하는부분이 안돌지 않을까 합니다.
저부분을 주석처리하고 해보시길 바랍니다. 그래도 안되면 다른 문제겠지요..ㅎㅎ
자세한건 디버깅을 해봐야 아는 문제라 뭐라 따로 말씀 드릴수가 없네요.ㅎ
회원가입을 누르면 jquery-1.8.3.min.js 여기서에러가 뜨는데 .
왜 그런건가요..그누보드 최신버전에서 가져와서 해봐도 안되네요..
reg_mb_id_check();
부분에서 빈공백의 문자열이 리턴되기 때문에 계속 alert메시지를 뿌리는 거네요.
정확한 원인은 하나하나 까보는 수밖에 없는데.....
방법을 알려드리자면....
bbs/ajax.mb_id.php를 여시면...
if ($msg = empty_mb_id($mb_id)) die($msg);
if ($msg = valid_mb_id($mb_id)) die($msg);
if ($msg = count_mb_id($mb_id)) die($msg);
if ($msg = exist_mb_id($mb_id)) die($msg);
if ($msg = reserve_mb_id($mb_id)) die($msg);
같이 체크를 합니다..
저것은 lib/register.lib.php 의 함수
function empty_mb_id($reg_mb_id)
{
if (trim($reg_mb_id)=='')
return "회원아이디를 입력해 주십시오.";
else
return "";
}
function valid_mb_id($reg_mb_id)
{
if (preg_match("/[^0-9a-z_]+/i", $reg_mb_id))
return "회원아이디는 영문자, 숫자, _ 만 입력하세요.";
else
return "";
}
function count_mb_id($reg_mb_id)
{
if (strlen($reg_mb_id) < 3)
return "회원아이디는 최소 3글자 이상 입력하세요.";
else
return "";
}
function exist_mb_id($reg_mb_id)
{
global $g5;
$reg_mb_id = trim($reg_mb_id);
if ($reg_mb_id == "") return "";
$sql = " select count(*) as cnt from `{$g5['member_table']}` where mb_id = '$reg_mb_id' ";
$row = sql_fetch($sql);
if ($row['cnt'])
return "이미 사용중인 회원아이디 입니다.";
else
return "";
}
function reserve_mb_id($reg_mb_id)
{
global $config;
if (preg_match("/[\,]?{$reg_mb_id}/i", $config['cf_prohibit_id']))
return "이미 예약된 단어로 사용할 수 없는 회원아이디 입니다.";
else
return "";
}
부분을 사용합니다.
소스부분이 바뀐게 없다면... 왜 공백의 문자열이 들어가는지 모르겠지만...
return ""; 부분이
return " ";
이런식으로 되어있지않을까 합니다.
흠 방법은 2가지로 보이네요. 링크를 보니...
일단 원인은 충돌문제? 등으로 원인은 모르겠다는 의미로 보이고...
어찌되었든 공백의 개행문자가 넘어와서 문제가 발생한다는 말입니다.
해결방법은 2가지를 제시하네요.
1. msg의 값을 개행을 없애는 처리를 하는 것이고.
2. ajax처리되는 부분을 다 없애고 update부분에서 체크하는 방법입니다.
제가 제시하는 방법이 될지는 모르겠지만...
return "";
부분을
return FALSE
로 바꿔서 한번 해보시길 바랄게요.