게시판에서 sms 보내기 100%전송 ok 정보
게시판에서 sms 보내기 100%전송 ok본문
이거 여기서 검색해서 해보는데 잘 안되서, extend에 코드를 넣고 어쩌구 하는 팁이 있던데
사용예도 설명이 부실하고ㅡㅡ
그래서 본격 삽질에 들어갔어요 ㅜㅜ
그리고 글쓰면 문자날라오는 황당한거는 취급안해요
아니 방금 내가 글쓰고 나왔는데 문자는 왜 날라와? ㅋㅋ
글쓰면 정해진 번호 넣어놓고 관리자에게 날라오는 초딩용도 취급안해요~ ㅋ
그러나 돈많이 드네요,
문자가 10원인가 15원인가 하는데,,,짜집퍼라 테스트하느라 많이 보내야 해서,,ㅜㅜ
게시판에서 팝업이나 게시판 페이지에서 폼으로 데이터를 sms.php로 전송합니다,
sms.php는 adm이나 bbs에 있을 필요는 없구요 스킨폴더에 넣으세요
<form
action="<?php ehco $board_skin_url;?>/sms.php"로 걸어주면 되구요
쉽게 말해 폼에서 전송한 데이터를 sms.php에서 처리한다는 뜻이에요
wr_1에 받는 번호 또는
게시판 글쓰기때 저장되는 회원 폰번호
wr_2에 보내는 번호 또는 value="여기다 보내는 숫자를 기입하시던지"
<input name="wr_1" value="~~ >
<input name="wr_2" value="~~ >
<input name="wr_message" value="~~ >
이런거 아시죠?
submit 버튼도 있어야 하는거 아시죠? ㅋ
------------------------------------------------
sms.php
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
include_once("../../../../../common.php"); //테마스킨폴더의 경우. 기타는 경로를 다시 지정해주세요
$wr_message = $_POST['wr_message'];
$wr_1 = $_POST['wr_1'];
$wr_2 = $_POST['wr_2'];
$recv_num = $wr_1; // 받는 번호
$send_num = $wr_2; // 보내는 번호
$receive_number = str_replace("-","",$recv_num); // - 제거
$send_number = str_replace("-","",$send_num); // - 제거
//////
다른 코드보면 보내는 번호를 위에 해놓고
받는 번호를 아래 해놓고,,,
아니 개념상 받는 사람이 중요하지 보내는 사람이 뭐 중요하다고 위에 배치하는지,,,
네이밍도 아주 웃끼게
recv_hp_mb이렇게 비슷하게 또 뭐라고 해놓고 참나,
hp있으면 됐지 거기서 mb는 왜 나와? ㅋ
회원이던 비회원이던 그냥 보내면 되지 그걸 왜 구분하냐고,,,,
나에 깔깔한 성격상 ㅜㅜ
///////////////////////////////////////////// 이거는 안해봤어요 ㅋ 특별한 경우이기 때문에 빼버리세요 이거 할려면 코드가 좀더 복잡해져야 해요
// 예약전송
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_type'] == 'LMS') {
include_once(G5_LIB_PATH.'/icode.lms.lib.php');
$port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);
// SMS 모듈 클래스 생성
if($port_setting !== false) {
$SMS = new LMS;
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
$strDest = array();
$strDest[] = $receive_number;
$strCallBack = $send_number;
$strCaller = iconv_euckr(trim($config['cf_title']));
$strSubject = '';
$strURL = '';
$strData = iconv_euckr($wr_message);
$strDate = '';
$nCount = count($strDest);
$res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
$SMS->Send();
$SMS->Init();
}
} else {
include_once(G5_LIB_PATH.'/icode.sms.lib.php');
$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($receive_number, $send_number, $config['cf_icode_id'], iconv_euckr(stripslashes($wr_message)), "");
$result = $SMS->Add($list, $reply, '', '', $wr_message, $booking, 1);
if ($result)
{
$result = $SMS->Send();
if ($result) //SMS 서버에 접속했습니다.
{
$row = sql_fetch("select max(wr_no) as wr_no from sms5_write");
if ($row)
$wr_no = $row['wr_no'] + 1;
else
$wr_no = 1;
sql_query("insert into sms5_write set wr_no='$wr_no', wr_renum=0, wr_reply='$send_number', wr_message='$wr_message', wr_booking='$wr_booking', wr_total='1', 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);
if($bo_table){
$memInfo = sql_fetch("select * from g5_write_".$bo_table." where wr_id='$wr_id'");
}
$log = array_shift($SMS->Log);
$log = @iconv('euc-kr', 'utf-8', $log);
//////////////////////////////////////////////////////////////// 여기는 왠지 모르게 디비에 저장이 안되네요 뭐 잘못된건지ㅜㅜ
sql_query("insert into sms5_history set wr_no='$wr_no', wr_renum=0, bg_no='0', mb_id='아이디', bk_no='0', hs_name='이름', hs_hp='$recieve_number', 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 sms5_write set wr_success='$wr_success', wr_failure='$wr_failure', wr_memo='$str_serialize' where wr_no='$wr_no' and wr_renum=0");
}
else win_close_alert("에러: SMS 서버와 통신이 불안정합니다.");
}
else win_close_alert("에러: SMS 데이터 입력도중 에러가 발생하였습니다.");
}
?>
사실 중간에 형식오류 어쩌구 같은거 없어도 날라가는데,,,,
디비에 저장할때 오류나면 오류 이유가 저장되는거라,,,,
팁대로 똑같이 했는데
안날라간다는 아가들이 있을거 같아서 ㅋ
미리 알려드릴게요
아이코드에 가입하고 충전이 되어 있어야 해요 ㅎ
------------------------------------------------------
디비에 전송내역이 왜 안들어가는지는 고수분이 빨리 오셔서 팁을 주셔야 할텐데~
귀찮은거 다 필요없고 뼈다구만 보낸다고 하면 아래 처럼 간단히
<?php
include_once("../../../../../common.php");
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$wr_message = $_POST['wr_message'];
$wr_1 = $_POST['wr_1'];
$wr_2 = $_POST['wr_2'];
$recv_num = $wr_1; // 받는 전화번호
$send_num = wr_2; // 보내는 전화번호
$receive_number = str_replace("-","",$recv_num); // - 제거
$send_number = str_replace("-","",$send_num); // - 제거
if ($config['cf_sms_use'] == 'icode') {
if($config['cf_sms_type'] == 'LMS') {
include_once(G5_LIB_PATH.'/icode.lms.lib.php');
$port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);
// SMS 모듈 클래스 생성
if($port_setting !== false) {
$SMS = new LMS;
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
$strDest = array();
$strDest[] = $receive_number;
$strCallBack = $send_number;
$strCaller = iconv_euckr(trim($config['cf_title']));
$strSubject = '';
$strURL = '';
$strData = iconv_euckr($wr_message);
$strDate = '';
$nCount = count($strDest);
$res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
$SMS->Send();
$SMS->Init();
}
} else {
include_once(G5_LIB_PATH.'/icode.sms.lib.php');
$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($receive_number, $send_number, $config['cf_icode_id'], iconv_euckr(stripslashes($wr_message)), "");
$SMS->Send();
$SMS->Init();
}
}
?>
게시판에 저장된 수신 발신 데이타로 보내면서
이 이상 간결하기는 어려울거 같아요 ㅎ
extend 나 sms 폴더에 이상한거 집어넣구 자시고 할거 업어요 ㅎ
예전에 이거 의뢰하느라 몇십 든거 같은데
그거 보면서 안되길레 고치려하면서 대체 무슨 코드가 이리 복잡한지 머리 지진나는 줄았았어요 ㅜㅜ
이렇게 간단한 코드를 거져준다면 낼름 받아먹어야 해요!
글쓰기시에 자동으로 문자 보내려면
이코드를 write_update.skin.php에 넣으면 되겠죠?
5
댓글 10개
귀중한 정보 감사합니다^^
감사합니다 ^^
감사합니다
감사합니다/.
감사합니다
좋은팁입니다
초보라 잘 모르겠지만 고생 많으셨습니다
// extend/sms.extend.php
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
add_replace('write_update_after', 'add_sms', 10, 5);
function sms($board, $wr_id, $w, $qstr, $redirect_url) {
global $g5, $_POST['wr_message'], $_POST['wr_1'], $_POST['wr_2'];
// sms 보내기 코드
}
@백조사랑 이게 어떤 용도의 코드일까요?
감사합니다.