글쓴이: 권기경
예가 있어.. 올립니다.. 조금 도움 되시길 ^^
예전에 저도 이런식으로 사용을 했었는데
지금도 할수 있는지 모르겠군요..
참고하세요.. ^^
========================================
글쓴이 : 눈이오면
홈페이지 : 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>
";
}
?>
대충 이런식으로 짜시면 될듯합니다.. ^^ 넘 쉬운걸 말씀드렸나하네요..
제 홈페이지 자료실에 소스를 올릴테니.. 필요하신 분은 받아가세요... ^^..
'PHP' 카테고리의 다른 글
PHP 매뉴얼 (프로그래밍 가이드) - TCPSchool (0) | 2021.05.15 |
---|---|
PHP 온라인 코딩 사이트 codepad.org (0) | 2016.08.11 |
아파치, PHP, MySQL 설치 (0) | 2015.10.14 |
PHP로 구현한 공인인증서 SEED 암호화 알고리즘 (0) | 2012.09.20 |
PHP로 공인인증서 서명하기 - 암호화 기법 (0) | 2012.09.20 |