반응형

 

글쓴이: 권기경 

 

예가 있어.. 올립니다.. 조금 도움 되시길 ^^

예전에 저도 이런식으로 사용을 했었는데

지금도 할수 있는지 모르겠군요..

참고하세요.. ^^

========================================
글쓴이 : 눈이오면
홈페이지 : http://zzagn.net/~free
E 메일 : free@zzagn.net
I C Q : 63917034
========================================

(http://zzagn.net/~free/msg/msger.html : 테스트 홈)

안녕하세요 초보 눈이오면입니다..

어떤분이 질문을 하셨길레.. 답변하는겸해서 이렇게 잠깐 강좌(?)를 할까 합니다
다기능 호출 기능은 제 허접 게시판에 사용되고 있는 기능중 하나입니다..
제가 요번에 강의하고 하는 내용은 호출(SMS) 기능입니다..

sms 호출 서비스를 하는 각 휴대폰 회사 홈페이지 CGI 서비스에 접속을 해서
메세지를 보내주는 기능입니다.. 여기에다가 제가 또 한가지 넣은 기능은 길게 쓴
호출을 여러번에 나누어 한번에 보내주는 것입니다..

( 데모 : http://zzagn.net/~free/msg/msger.html )

1. 각 휴대폰사의 CGI 서비스를 분석하는 일

제가 가지고 있는 것이 011이기때문에 011로 설명을 하겠습니다.. 다른 번호도 같은
방법으로 하시면 됩니다..
먼저 011의 호출 CGI는 cyber.sktelecom.com/ncgi-bin/page_011now.cgi 입니다..
그리고 써줘야하는 변수들은 call_number,call_message,call_sender_num1,2,3입니다
call_number는 011을 뺀 나머지를 쓰고..call_message는 호출할 내용을 call_senser_
num1,2,3 은.. 호출하는 사람의 회신받을 번호를 넣으면 되는 것입니다..

2. 입력을 받을 폼을 정의하죠.. (mysend.html)
생략...
....
<form method=post action=sending.php3>
호출 번호<br>
<input type=text size=3 name=call_num1> -
<input type=text size=3 name=call_num2> -
<input type=text size=3 name=call_num3><br>
회신 번호<br>
<input type=text size=3 name=send_num1> -
<input type=text size=3 name=send_num2> -
<input type=text size=3 name=send_num3><br>
호출할 내용<br>
<textarea rows=5 cols=40 name=call_msg></textarea><br>
<input type=submit value=호출><input type=reset value=취소>
....
생략...

정말 대충 적어본 폼입니다.. 쿠.. 여러분들이 이뿌게 바꾸세요.. *^^*

3. 이제 한번 호출을 하는 메인화일을 만들어보자.. (sending.php3)
대충 설명을 위해 짠 것이니 안되면 되게 고치세요.. (농담) *^^*
자 갑니다.. -_-

우선 sending.php3에서 사용하기위한 함수들을 정의해야 겠죠.. ifsnow.inc라는
화일에 만들겠습니다..

===== ifsnow.inc ========
<?
function err_msg($bool,$msg)

if ($bool==1)

echo "
<script>
window.alert('$msg');
history.go(-1);
</script>
";
exit;
{{}
}
// 에러메세지를 출력시켜주고 뒤로 돌아가는 함수.. 많이들 보셨죠.. ^^

function is_digit($char)

for($i = 0; $i < strlen($char); $i++)
$temp=ord($char[$i]);
if ($temp < 48 || $temp > 57) return false;
{{}
return true;
}
// 입력한 문자가 숫자인지 아닌지를 판단해 주는 함수입니다.. ^^
// 숫자의 10진 범위가 48~57까지입니다.. 하나하나 판단해서 이 범위가 안되면 숫자가
// 아닌것이겠죠.. ^^

}

?>

<?
// 입력받은 정보에 대해서 약간의 체크를 하죠.. ^^
err_msg((!$call_num1 || !$call_num2 || !$call_num3),
"수신 번호를 입력하세요..");

err_msg((!$send_num1 || !$send_num2 || !$send_num3),
"회신 번호를 입력하세요..");

err_msg(!$call_msg,"호출할 내용을 입력하세요..");

err_msg((!is_digit($call_num1) || !is_digit($call_num2) || !is_digit($call_num3) ||
!is_digit($send_num1) || !is_digit($send_num2) || !is_digit($send_num3)),
"숫자만 넣어주세요.. ^^");

$call_msg=urldecode($call_msg);
$call_msg=chop($call_msg);
// 뒤쪽의 빈공간을 삭제
$call_msg=trim($call_msg);
// 앞쪽의 빈공간을 삭제

$list=array("","","","","");
// 리스트라는 5개짜리 빈 배열을 만듭니다.. 5개까지 연속으로 메세지를 나눠보내주기
// 위해서입니다..

switch ($call_num1)

case '011':
$CGI_BIN="/ncgi-bin/page_011now.cgi";
$SERVER="cyber.sktelecom.com";
break;

case '016':
err_msg(1,"현제는 011만 서비스합니다..");
break;

case '017':
err_msg(1,"현제는 011만 서비스합니다..");
break;

case '018':
err_msg(1,"현제는 011만 서비스합니다..");
break;

case '019':
err_msg(1,"현제는 011만 서비스합니다..");
break;

default:
$err=sprintf("%s로 시작하는 이동통신 번호는 없는듯하네요..",$call_num1);
err_msg(1,$err);
break;
{}

// 위에 011과 같이 쓴 부분을 응용해서 다른 휴대폰사의 홈페이지와 CGI 주소를
// 적어주시면 됩니다.. 011이외의 번호는 여러분에게 맡기겠습니다..

$len=strlen($call_msg);
// 먼저 입력받은 문장의 길이 확인..
$page=ceil($len/64);

$cut_size=64;
$snow=1;
$j=0;

for ($i=0;$i<strlen($call_msg);$i++)

if ($snow>$cut_size) $j++; $snow=1; {{}

if (ord($call_msg[$i])<=127)

$list[$j].=$call_msg[$i];
if ($snow%$cut_size==0) $j++; $snow=0; {{}
}
else

if ($snow%$cut_size==0) $j++; $snow=1; {{}
$han=$call_msg[$i].$call_msg[++$i];
$list[$j].=$han;
$snow++;
}
$snow++;
}

// 페이지별로 나눠서 List에 넣어주는 기능을 합니다.. 그런데 이상하게도
// 80바이트까지 된다고 하는데.. 연속으로 보내기에는.. 62로 나눠서 넣어야..
// 여러개로 나뉘어서 제대로 가는군요..

for ($i=0,$j=1;$i<$page ;$i++,$j++ )

if (!($fp=fsockopen($SERVER,80)))

echo "서버에 접속을 할수가 없습니다..";
exit;
{{}

$list[$i]=chop($list[$i]);
$list[$i]=trim($list[$i]);

switch ($call_num1)

case '011':
$que=sprintf("call_number=%s-%s&call_message=%s&call_sender_num1=%s&call_sender_num2=%s&call_sender_num3=%s",$call_num2,$call_num3,$list[$i],$send_num1,$send_num2,$send_num3);
break;
{}
// 나머지 번호는 생략..

$tmp=sprintf("POST %s HTTP/1.0nContent-Length: %dnContent-Type: application/x-www-form-urlencodednn",$CGI_BIN,strlen($que));
$tmp=sprintf("%s%s",$tmp,$que);
fputs($fp,$tmp,strlen($tmp));
fclose($fp);
echo
"
<font size=2> -+- $j 번째 메세지 -+-<br>
$call_num1 - $call_num2 - $call_num3 번으로<br>
"$list[$i]"로 호출<br></font>
";
}
?>

대충 이런식으로 짜시면 될듯합니다.. ^^ 넘 쉬운걸 말씀드렸나하네요..
제 홈페이지 자료실에 소스를 올릴테니.. 필요하신 분은 받아가세요... ^^..

출처 : 모바일게임 개발공간
글쓴이 : 김영우 원글보기
메모 :
반응형

+ Recent posts