휴대폰인증문제 - 아이코드? ajax?

휴대폰인증문제 - 아이코드? ajax?

QA

휴대폰인증문제 - 아이코드? ajax?

본문

올려주신 아래 소스코드를 감사한맘으로 적용중입니다

https://sir.kr/g5_skin/20988

 

구버전 그누보드(5.3.1)에서 작성된 코드다보니 제버전(5.3.2.6)에 맞추어 sms.php, register_form.php 등 변경된 부분만 적용하였습니다

 

그리고 phpMyadmin에서 a_num이 4자리로 되어있는걸 5자리로도 수정하였구요

 

그런데 계속 입력한 인증번호가 일치하지 않는다고 나오네요.

실제로 phpMyadmin에서 확인한 a_num을 동일하게 넣었는데도 말이에요..

 

 

코드를 좀 더 살펴보니 

ajax_send.php가 제대로 작동하지 않는것같다는 느낌이 들었습니다.

 

참고로 ajax_send.php는 아래와 같은데요.

 

<?php

include_once('../common.php');

 

$a_auth      = trim($_POST['a_auth']);

$recv_number = trim($_POST['mb_hp']);

 

$sql = "select count(*) as cnt from sms_auth where a_hp='$recv_number' and a_auth>'".(time()-60*10)."' "; // 현재 10분

입니다. 추후 10을 변경하시면 됩니다.

$row = sql_fetch($sql);

if ($row[cnt]>5){ //제한 횟수

        echo "F";

}else{

        if($config['cf_sms_use'] == 'icode') {

 

                include_once(G5_LIB_PATH.'/icode.sms.lib.php');

 

                $a_num = rand(10000, 99999);

 

                $sms_content = "본인확인 인증번호[".$a_num.']를 화면에 입력해주세요';

                $send_number = preg_replace('/[^0-9]/', '', $sms5['cf_phone']);

 

                if($recv_number) {

                        sql_query("insert into sms_auth set a_auth='$a_auth', a_num='$a_num', a_hp='$recv_number', a_regdate=now()");

 

                        $SMS = new SMS; // SMS 연결

                        $SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);

                        $SMS->Add($recv_number, $send_number, $config['cf_icode_id'], iconv("utf-8", "euc-kr", stripslashes($sms_content)), "");

                        $SMS->Send();

                }

 

                echo "Y";

                exit;

        }else{

                echo "N";

        }

}

?>

 

여기서는 각 경우에 대해 echo "F", "Y", "N"로 처리하는 반면 이 결과값이 sms.php로 제대로 넘어오지 않아 sms.php에서 제대로 작동하지 않는듯합니다 ㅜㅜ 

예컨대 sms.php에는 아래와 같은 코드가 있는데요.

 

function authSend(){

        var f1 = document.sForm;

        $.post("/bbs/ajax_send.php", $("#sForm").serialize(),function(data){

                if (data=="F"){

                        alert("단시간에 너무 많은 요청을 하셨습니다.\n\n잠시후 이용 부탁드립니다.");

                }else{

                        alert("요청하신 휴대폰으로 '인증번호'가 발송되었습니다.");

                        f1.sendYN.value = "Y";

                        f1.auth_num.focus();

                }

        });     

}

 

data값이 F일때 "단시간에 ~~"라는 alert를 띄워야하는데 그냥 무조건 else로 처리되더군요..

 

분명 예전댓글들을 보니 다들 잘 된다하셧는데..

혹시 버전이 구버전(5.3.1)에서 신버전(5.3.2.6) 그누보드가 되면서 위와 같은 ajax(?)가 안먹히게 되었을까요?

아니면 다른문제가 있는걸까요? 참고로 aws 사용중입니다...

답변달아주실분들께 미리 감사드리며..이 글이 후에 검색하시는분들께도 도움이 되면 좋겠습니다.

 

이 질문에 댓글 쓰기 :

답변 7

5.3.2 로 바뀌었다고 해서 갑자기 ajax가 안 될리는 없을 겁니다.

최근 버전에 해당 팁을 적용해본 적이 있었는데 자리수 문제 말고는 별다른 문제가 없었던걸로 기억합니다.

디비에 인증번호 및 휴대폰번호가 정상으로 입력되고 인증번호가 발송된다면 위 파일들의 문제가 아닙니다. 인증번호를 체크하는 파일을 살펴보셔야합니다.

네,, 번호는 정상적으로 db에 입력되는데
ajax_send.php에서 cnt>5 일 경우 "단시간너무많이입력~~"이라는 메세지가 떠야 하는데 이것조차 작동하지않아 ajax_send.php를 의심하였습니다
일단 인증번호체크하는곳도 살펴보겠습니다~~

인증번호체크하는 부분이 ajax_check.php인데 일치하는경우 echo "Y" 그렇지않은경우 echo "N"로 되어있네요.
테스트를 위해 일치하는경우 echo "N", 그렇지않은경우 "Y"로 바꿔보았는데도 번호가 일치하지않는다고 뜨는걸로 보아 그 전단계를 살펴봐야할지 고민입니다..

*나중에 정보를 찾는 분들 보시라고 댓글 남깁니다.

sms.php 에서 data == Y or N 로 판단을 하는데 이부분이 이상한것같아서 alert("인증번호가 일치하지 ~~" + data);로 data를 출력시도해보았습니다.

그러하였더니 아래와 같았습니다.

 

입력하신 '인증번호'가 일치하지 않습니다.<br />
<b>Warning</b>:  Use of undefined constant a_num - assumed 'a_num' (this will throw an Error in a future version of PHP) in <b>/opt/lampp/htdocs/bbs/ajax_check.php</b> on line <b>10</b><br />
N

해결하였습니다... 자문자답이라 민망하지만ㅜ좀 써보자면..

이는 php 버전이 업데이트되면서 발생한 문제로 아래 링크를 참고하시면 됩니다..

https://www.happyjung.com:6001/lecture/2816

 

따라서 ajax_check.php의 

 

if ($row[a_num]==$auth_num){

        echo "Y";

부분의 a_num을 'a_num'으로 변경하였더니 잘 작동합니다..

답변을 작성하시기 전에 로그인 해주세요.
전체 1,284
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT