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

아이코드 연동하여 게시물 등록시 문자오게 하고싶은데 안됩니다

kcgd 9년 전 조회 10,931

어제 발신번호 사전 등록하였습니다.

 

일단 아이코드는 연동하여 관리자페이지에서 문자보내기 테스트는 해봤구요. 정상 작동합니다.

 

그러나 비회원이 홈페이지 게시판에 글을 작성하면 문자를 발송하는것이 작동을 안합니다.

 

소스는 http://sir.kr/g5_tip/2506?sfl=wr_subject%7C%7Cwr_content&stx=icode">http://sir.kr/g5_tip/2506?sfl=wr_subject%7C%7Cwr_content&stx=icode 이 소스를 사용했습니다. 

 

또한 skin 폴더 내부의 게시판폴더에 write_update.skin.php 추가하여 소스 코드 집어넣어줬습니다.

 

 

</p><p><? </p><p>if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가 </p><p>include_once(G5_LIB_PATH.'/icode.sms.lib.php'); </p><p> </p><p> // 문의글 등록시 관리자에게 전송 </p><p>  if($bo_table == "join" && $w == '') {</p><p> </p><p>  $send_hp_mb = "*** 개인정보보호를 위한 휴대폰번호 노출방지 ***"; // 보내는 전화번호 </p><p>  $recv_hp_mb = "*** 개인정보보호를 위한 휴대폰번호 노출방지 ***"; //  받는 전화번호 </p><p> </p><p>      $send_hp = str_replace("-","",$send_hp_mb); // - 제거 </p><p>  $recv_hp = str_replace("-","",$recv_hp_mb); // - 제거 </p><p> </p><p>      $send_number =  "$send_hp"; </p><p>  $recv_number = "$recv_hp"; </p><p> </p><p>      $sms_content = $wr_name." 님이 ".$wr_subject." 신청을 하셨습니다.";  // 문자 내용      </p><p> </p><p>      $SMS = new SMS; // SMS 연결 </p><p>      $SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']); </p><p>      $SMS->Add($recv_number, $send_number, $config['cf_icode_id'], iconv("utf-8", "euc-kr", stripslashes($sms_content)), ""); </p><p>      $SMS->Send(); </p><p>    }</p><p>          alert("성공적으로 접수되었습니다.", "./board.php?bo_table=$bo_table&wr_id=$wr_id"); </p><p> </p><p> // 문자보내기 끝 </p><p> ?>

 

제가 사용한 코드입니다. 이틀간 검색하며 찾아봤는데 도무지 해결이 안되어 질문글을 남깁니다.

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

답변 4개

9년 전

아래 내용을 /inc/sms_send_inc.php 로 저장 하시고

=====================================================

$wr_reply   = preg_replace('#[^0-9\-]#', '', trim($wr_reply)); $wr_message = clean_xss_tags(trim($wr_message));

$list = array(); $hps = array();

$send_list = explode('/', $send_list); $wr_overlap = 1; // 중복번호를 체크함 $overlap = 0; $duplicate_data = array(); $duplicate_data['hp'] = array(); $str_serialize = ""; while ($row = array_shift($send_list)) {     $item = explode(',', $row);

    for ($i=1, $max = count($item); $i<$max; $i++)     {         if (!trim($item[$i])) continue;

        switch ($item[0])         {             case 'g': // 그룹전송                 $qry = sql_query("select * from {$g5['sms5_book_table']} where bg_no='$item[1]' and bk_receipt=1");                 while ($row = sql_fetch_array($qry))                 {                     $row['bk_hp'] = get_hp($row['bk_hp'], 0);

                    if(!$row['bk_hp']) continue;

                    if ($wr_overlap && array_overlap($hps, $row['bk_hp'])) {                         $overlap++;                         array_push( $duplicate_data['hp'], $row['bk_hp'] );                         continue;                     }

                    array_push($list, $row);                     array_push($hps, $row['bk_hp']);                 }                 break;

            case 'l':                 $mb_level = $item[$i];

                $qry = sql_query("select mb_id, mb_name, mb_nick, mb_hp from {$g5['member_table']} where mb_level='$mb_level' and mb_sms=1 and not (mb_hp='')");                 while ($row = sql_fetch_array($qry))                 {                     $name = $row['mb_nick'];                     $hp = get_hp($row['mb_hp'], 0);                     $mb_id = $row['mb_id'];

                    if(!$hp) continue;

                    if ($wr_overlap && array_overlap($hps, $hp)) {                         $overlap++;                         array_push( $duplicate_data['hp'], $row['bk_hp'] );                         continue;                     }

                    $row = sql_fetch("select bg_no, bk_no from {$g5['sms5_book_table']} where mb_id='{$row['mb_id']}'");                     $bg_no = $row['bg_no'];                     $bk_no = $row['bk_no'];

                    array_push($list, array('bk_hp' => $hp, 'bk_name' => $name, 'mb_id' => $mb_id, 'bg_no' => $bg_no, 'bk_no' => $bk_no));                     array_push($hps, $hp);                 }                 break;

            case 'h': // 권한(mb_leve) 선택

                $item[$i] = explode(':', $item[$i]);                 $hp = get_hp($item[$i][1], 0);                 $name = $item[$i][0];

                if(!$hp) continue;

                if ($wr_overlap && array_overlap($hps, $hp)) {                     $overlap++;                     array_push( $duplicate_data['hp'], $row['bk_hp'] );                     continue;                 }

                array_push($list, array('bk_hp' => $hp, 'bk_name' => $name));                 array_push($hps, $hp);                 break;

            case 'p': // 개인 선택

                $row = sql_fetch("select * from {$g5['sms5_book_table']} where bk_no='$item[$i]'");                 $row['bk_hp'] = get_hp($row['bk_hp'], 0);

                if(!$row['bk_hp']) continue;

                if ($wr_overlap && array_overlap($hps, $row['bk_hp'])) {                     $overlap++;                     array_push( $duplicate_data['hp'], $row['bk_hp'] );                     continue;                 }                 array_push($list, $row);                 array_push($hps, $row['bk_hp']);                 break;         }     } }

if( count($duplicate_data['hp']) ){ //중복된 번호가 있다면     $duplicate_data['total'] = $overlap;     $str_serialize = serialize($duplicate_data); }

$wr_total = count($list);

// 예약전송 if ($wr_by && $wr_bm && $wr_bd && $wr_bh && $wr_bi) {     $wr_booking = "$wr_by-$wr_bm-$wr_bd $wr_bh:$wr_bi";     $booking = $wr_by.$wr_bm.$wr_bd.$wr_bh.$wr_bi; } else {     $wr_booking = '';     $booking = ''; }

if ($config['cf_sms_use'] != 'icode') {     alert('기본환경설정에서 icode sms 사용이 비활성화 되어 있습니다.'); }

include_once(G5_ADMIN_PATH.'/admin.head.php');

$reply = str_replace('-', '', trim($wr_reply)); $wr_message = conv_unescape_nl($wr_message);

$SMS = new SMS5;

if($config['cf_sms_type'] == 'LMS') {     $port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);

    if($port_setting !== false) {         $SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);

        $wr_success = 0;         $wr_failure = 0;         $count      = 0;

        $row2 = sql_fetch("select max(wr_no) as wr_no from {$g5['sms5_write_table']}");         if ($row2)             $wr_no = $row2['wr_no'] + 1;         else             $wr_no = 1;

        for($i=0; $i<$wr_total; $i++) {             $strDest = array();             $strDest[]   = $list[$i]['bk_hp'];             $strCallBack = $reply;             $strCaller   = $config['cf_title'];             $strSubject  = '';             $strURL      = '';             $strData     = $wr_message;             if( !empty($list[$i]['bk_name']) ){                 $strData    = str_replace("{이름}", $list[$i]['bk_name'], $strData);             }             $strDate = $booking;             $nCount = 1;

            $result = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);

            if($result) {                 $result = $SMS->Send();

                if ($result) //SMS 서버에 접속했습니다.                 {                     foreach ($SMS->Result as $result)                     {                         list($phone, $code) = explode(":", $result);

                        if (substr($code,0,5) == "Error")                         {                             $hs_code = substr($code,6,2);

                            switch ($hs_code) {                                 case '02':  // "02:형식오류"                                     $hs_memo = "형식이 잘못되어 전송이 실패하였습니다.";                                     break;                                 case '23':  // "23:인증실패,데이터오류,전송날짜오류"                                     $hs_memo = "데이터를 다시 확인해 주시기바랍니다.";                                     break;                                 case '97':  // "97:잔여코인부족"                                     $hs_memo = "잔여코인이 부족합니다.";                                     break;                                 case '98':  // "98:사용기간만료"                                     $hs_memo = "사용기간이 만료되었습니다.";                                     break;                                 case '99':  // "99:인증실패"                                     $hs_memo = "인증 받지 못하였습니다. 계정을 다시 확인해 주세요.";                                     break;                                 default:  // "미 확인 오류"                                     $hs_memo = "알 수 없는 오류로 전송이 실패하였습니다.";                                     break;                             }                             $wr_failure++;                             $hs_flag = 0;                         }                         else                         {                             $hs_code = $code;                             $hs_memo = get_hp($phone, 1)."로 전송했습니다.";                             $wr_success++;                             $hs_flag = 1;                         }

                        $row = $list[$i];                         $row['bk_hp'] = get_hp($row['bk_hp'], 1);

                        $log = array_shift($SMS->Log);                         $log = @iconv('euc-kr', 'utf-8', $log);

                        sql_query("insert into {$g5['sms5_history_table']} set wr_no='$wr_no', wr_renum=0, bg_no='{$row['bg_no']}', mb_id='{$row['mb_id']}', bk_no='{$row['bk_no']}', hs_name='".addslashes($row['bk_name'])."', hs_hp='{$row['bk_hp']}', hs_datetime='".G5_TIME_YMDHIS."', hs_flag='$hs_flag', hs_code='$hs_code', hs_memo='".addslashes($hs_memo)."', hs_log='".addslashes($log)."'", false);                     }

                    $SMS->Init(); // 보관하고 있던 결과값을 지웁니다.                 }             }         }

        sql_query("insert into {$g5['sms5_write_table']} set wr_no='$wr_no', wr_renum=0, wr_reply='$wr_reply', wr_message='$wr_message', wr_success='$wr_success', wr_failure='$wr_failure', wr_memo='$str_serialize', wr_booking='$wr_booking', wr_total='$wr_total', wr_datetime='".G5_TIME_YMDHIS."'");     } } else {     $SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);     $result = $SMS->Add2($list, $reply, '', '', $wr_message, $booking, $wr_total);

    if ($result)     {         $result = $SMS->Send();

        if ($result) //SMS 서버에 접속했습니다.         {             $row = sql_fetch("select max(wr_no) as wr_no from {$g5['sms5_write_table']}");             if ($row)                 $wr_no = $row['wr_no'] + 1;             else                 $wr_no = 1;

            sql_query("insert into {$g5['sms5_write_table']} set wr_no='$wr_no', wr_renum=0, wr_reply='$wr_reply', wr_message='$wr_message', wr_booking='$wr_booking', wr_total='$wr_total', wr_datetime='".G5_TIME_YMDHIS."'");

            $wr_success = 0;             $wr_failure = 0;             $count      = 0;

            foreach ($SMS->Result as $result)             {                 list($phone, $code) = explode(":", $result);

                if (substr($code,0,5) == "Error")                 {                     $hs_code = substr($code,6,2);

                    switch ($hs_code) {                         case '02':  // "02:형식오류"                             $hs_memo = "형식이 잘못되어 전송이 실패하였습니다.";                             break;                         case '23':  // "23:인증실패,데이터오류,전송날짜오류"                             $hs_memo = "데이터를 다시 확인해 주시기바랍니다.";                             break;                         case '97':  // "97:잔여코인부족"                             $hs_memo = "잔여코인이 부족합니다.";                             break;                         case '98':  // "98:사용기간만료"                             $hs_memo = "사용기간이 만료되었습니다.";                             break;                         case '99':  // "99:인증실패"                             $hs_memo = "인증 받지 못하였습니다. 계정을 다시 확인해 주세요.";                             break;                         default:  // "미 확인 오류"                             $hs_memo = "알 수 없는 오류로 전송이 실패하였습니다.";                             break;                     }                     $wr_failure++;                     $hs_flag = 0;                 }                 else                 {                     $hs_code = $code;                     $hs_memo = get_hp($phone, 1)."로 전송했습니다.";                     $wr_success++;                     $hs_flag = 1;                 }

                $row = array_shift($list);                 $row['bk_hp'] = get_hp($row['bk_hp'], 1);

                $log = array_shift($SMS->Log);                 $log = @iconv('euc-kr', 'utf-8', $log);

                sql_query("insert into {$g5['sms5_history_table']} set wr_no='$wr_no', wr_renum=0, bg_no='{$row['bg_no']}', mb_id='{$row['mb_id']}', bk_no='{$row['bk_no']}', hs_name='".addslashes($row['bk_name'])."', hs_hp='{$row['bk_hp']}', hs_datetime='".G5_TIME_YMDHIS."', hs_flag='$hs_flag', hs_code='$hs_code', hs_memo='".addslashes($hs_memo)."', hs_log='".addslashes($log)."'", false);             }             $SMS->Init(); // 보관하고 있던 결과값을 지웁니다.

            sql_query("update {$g5['sms5_write_table']} set wr_success='$wr_success', wr_failure='$wr_failure', wr_memo='$str_serialize' where wr_no='$wr_no' and wr_renum=0");         }         else echo("에러: SMS 서버와 통신이 불안정합니다.");     }     else echo ("에러: SMS 데이터 입력도중 에러가 발생하였습니다."); }

?>

=========================================================================

write_update.skin.php 에 아래와 같이 넣어보세요 그전꺼는 disable 시키고

 

===========================================================================

if($w == ""){ // 글 작성시      $wr_reply = "000-0000-0000"; // 보내는 전화번호   $wr_message = $wr_name." 님이 ".$wr_subject." 신청을 하셨습니다.";     $send_list = "h,관리자1:000-0000-0000";   include('../inc/sms_send_inc.php');  }

===========================================================================

 //받는 전화번호 받을 전화번호 추가시 

$send_list = "h,관리자1:000-0000-0000/h,관리자2:000-0000-0000";

 

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

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

9년 전

관리자페이 - sms 전송내역을 일단 확인해 보세요 어떤 에러가 났는지 

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

답변에 대한 댓글 1개

k
kcgd
9년 전
게시물 등록 시 발송되는것은 전송 내역에 안 나오네요.

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

9년 전

skin > board > qna로 가정하면

 

아래의 소스를 write_update.skin.php로 저장하여 qna 폴더에 넣으십시오~

 

저도 한참 헤매다가 아래의 소스로 성공하였습니다.

 

저는 write_update.skin.php를 wite_update.skin.php로 r를 빼먹고 올려서 일 주일 헤메였습니다...ㅜㅜ

답은 가까이에 있었는데...이런 경우가 있었습니다.

 

아뭏든 성공하시기 바랍니다.

 

보내는 전화번호와 받는 전화번호에 질문하시는 분의 전화번호를 똑같이 넣고 시험하여 보십시오~ 

 

--- 아 래 ---

 

if (!defined("_GNUBOARD_")) exit;//개별 페이지 접근 불가

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

 

//질문 등록시 관리자에게 전송

if($bo_table == "qna") { // 수정 시에도 문자 보내기

//if($bo_table == "qna" && $w == '') { // 수정 및 댓글에는 문자 보내지 않기

 

// $send_hp_mb = "질문하신 분 전화번호";//보내는 전화번호

// $recv_hp_mb = "질문하신 분 전화번호";//받는 전화번호

 

$send_hp = str_replace("-","",$send_hp_mb);//-제거

$recv_hp = str_replace("-","",$recv_hp_mb);//-제거

 

$send_number = "질문하신 분 전화번호"; // - 없이 입력

$recv_number = "질문하신 분 전화번호";

 

$sms_content = $wr_name." 님이 질문게시판에 글을 남겼습니다";  // 문자 내용

// $sms_content = "질문게시판에 새 글이 등록되었습니다.";

 

$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();

}

alert($wr_name."관리자에게 문자로 전송하였습니다.", G5_URL);

?>

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

답변에 대한 댓글 1개

k
kcgd
9년 전
저도 이틀 간 허당영님께서 질문하신 글 계속 읽어봤는데요.. 방금 올려주신 이 소스로 해도 안됩니다.. 어찌된 일인지 모르겠네요 ㅠㅠ

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

9년 전

글 작성을 하면 "성공적으로 접수되었습니다." 이 메세지는 보이세요?  

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

답변에 대한 댓글 1개

k
kcgd
9년 전
네! 보입니다.

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

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

로그인