호스팅 [카페24] SMS 문자 발송
페이지 정보
본문
카페24에서 SMS호스팅 이용할때 쉽게 사용하도록 정리하였습니다.
1. 문자연동페이지에 삽입할 내용
아래에 post 또는 적용될 내용을 대입합니다.
<?php
//cafe24 문자발송
$sms_action = ""; // 실제발송 go
$sms_smsType = "S"; // S 단문(SMS) L 장문(LMS)
$sms_subject = ""; // 제목
$sms_msg = ""; // 메시지
$sms_rphone = "010-1111-2222"; // 받는번호
$sms_testflag = "Y"; // 테스트발송 Y
include("sms_cafe24.php");
?>
2. sms_cafe24.php 파일 생성
<?php
// cafe24 SMS 발송
$sms_userid = ""; //SMS 아이디.
$sms_secure = ""; //인증키
// 010-3775-0927
$sms_sphone1 = "010"; // 보내는 번호1 예) 010
$sms_sphone2 = ""; // 보내는 번호2 예) 1234
$sms_sphone3 = ""; // 보내는 번호3 예) 5678
$sms_alert = ''; // 성공시 대화 상자(alert)를 사용 1
/*
사용할 경우 : 1
성공시 대화 상자(alert)를 사용 하지 않게 합니다.
*/
//$sms_smsType = $_POST['smsType']; // 발송타입
/*
S 단문(SMS)
L 장문(LMS)
<span><input type="radio" name="smsType" value="S">단문(SMS)</span><span><input type="radio" name="smsType" value="L">장문(LMS)</span> <br />
*/
//$sms_msg = $_POST['msg']; // 메시지
/*
예) SMS = 90 byte 이하, LMS = 2,000 byte 이하 까지 입력 (상단 라디오버튼으로 SMS, LMS 선택)
*/
//$sms_subject = $_POST['subject']; // 제목
/*
예) 안녕하세요. 카페24입니다. 50byte 이하로 입력
장문(LMS)일 경우에만 제목을 입력할 수 있습니다.
수신자 휴대폰 기종에 따라 입력한 제목이 출력되지 않을 수 있습니다.
발송 시 제목이 없으면 [제목없음]으로 발송됩니다.
*/
//$sms_rphone = $_POST['rphone']; // 받는번호
/*
예) 011-012-1234
'-' 포함해서 입력, 받는사람이 여러명이 경우 콤마(,)로 구분해주세요
잘못된 전화번호는 전송되지 않습니다.
※ destination 변수 사용시에는 "" 으로 비워주세요.
*/
$sms_rdate = $_POST['rdate']; // 예약날짜 예) 20080930
$sms_rtime = $_POST['rtime']; // 예약시간
/*
예) 173000
오후 5시 30분
예약시간은 최소 10분 이상으로 설정하셔야합니다.
*/
$sms_returnurl = $_POST['returnurl']; // 리턴 URL
/*
메시지 전송 후 이동할 페이지
( http:// 또는 https:// 를 붙이셔야 합니다. )
*/
//$sms_testflag = "Y"; // 테스트 요청
/*
테스트일 경우 : Y
테스트가 아닐 경우 입력하지 마세요.
실제 sms는 보내지 않으나 단순한 페이지 테스트를 위한 용도
*/
$sms_destination = "";
/*
메시지에 받는 사람 이름을 넣고 싶을 때 이용
destination 값을 "휴대폰번호|이름" 과 같이 '|'문자로 구분해서 입력하시고,
msg값에 “{name}” 이라는 문구를 입력 후 전송하시면 됩니다.
예)
<input type="type" name="destination" value="010-000-0000|홍길동,010-000-0000|김영희">
<input type="type" name="msg" value="{name}님, 주문하신 물품이 배송되었습니다.">
*/
$sms_repeatFlag = ""; // 반복 설정을 원하는 경우 : Y
$sms_repeatNum = ""; // 반복 횟수 1~10회 가능.
$sms_repeatTime = ""; // 반복 시간 15분 이상부터 가능.
//echo "<br>sms_action = {$sms_action}<br>";
if($_POST['sms_action']=='go' || $sms_action=='go'){
/******************** 인증정보 ********************/
$sms_url = "https://sslsms.cafe24.com/sms_sender.php"; // 전송요청 URL
$sms['user_id'] = base64_encode($sms_userid); //SMS 아이디.
$sms['secure'] = base64_encode($sms_secure) ; //인증키
$sms['msg'] = base64_encode(stripslashes($sms_msg));
if( $sms_smsType == "L"){
$sms['subject'] = base64_encode($sms_subject);
}
$sms['rphone'] = base64_encode($sms_rphone);
$sms['sphone1'] = base64_encode($sms_sphone1);
$sms['sphone2'] = base64_encode($sms_sphone2);
$sms['sphone3'] = base64_encode($sms_sphone3);
$sms['rdate'] = base64_encode($sms_rdate);
$sms['rtime'] = base64_encode($sms_rtime);
$sms['mode'] = base64_encode("1"); // base64 사용시 반드시 모드값을 1로 주셔야 합니다.
$sms['returnurl'] = base64_encode($sms_returnurl);
$sms['testflag'] = base64_encode($sms_testflag);
$sms['destination'] = strtr(base64_encode($sms_destination), '+/=', '-,');
$returnurl = $sms_returnurl;
$sms['repeatFlag'] = base64_encode($sms_repeatFlag);
$sms['repeatNum'] = base64_encode($sms_repeatNum);
$sms['repeatTime'] = base64_encode($sms_repeatTime);
$sms['smsType'] = base64_encode($sms_smsType); // LMS일경우 L
$nointeractive = $sms_alert; //사용할 경우 : 1, 성공시 대화상자(alert)를 생략
$host_info = explode("/", $sms_url);
$host = $host_info[2];
$path = $host_info[3]."/".$host_info[4];
srand((double)microtime()*1000000);
$boundary = "---------------------".substr(md5(rand(0,32000)),0,10);
//print_r($sms);
// 헤더 생성
$header = "POST /{$path} HTTP/1.0\r\n";
$header .= "Host: {$host}\r\n";
$header .= "Content-type: multipart/form-data, boundary={$boundary}\r\n";
// 본문 생성
foreach($sms AS $index => $value){
$data .="--{$boundary}\r\n";
$data .= "Content-Disposition: form-data; name=\"{$index}\"\r\n";
$data .= "\r\n{$value}\r\n";
$data .="--{$boundary}\r\n";
}
$header .= "Content-length: ". strlen($data) ."\r\n\r\n";
$fp = fsockopen($host, 80);
if ($fp) {
fputs($fp, $header.$data);
$rsp = '';
while(!feof($fp)) {
$rsp .= fgets($fp,8192);
}
fclose($fp);
$msg = explode("\r\n\r\n",trim($rsp));
$rMsg = explode(",", $msg[1]);
$Result = $rMsg[0]; //발송결과
$Count = $rMsg[1]; //잔여건수
//발송결과 알림
if($Result=="success") {
$alert = "성공";
$alert .= " 잔여건수는 {$Count}건 입니다.";
}
else if($Result=="reserved") {
$alert = "성공적으로 예약되었습니다.";
$alert .= " 잔여건수는 {$Count}건 입니다.";
}
else if($Result=="3205") {
$alert = "잘못된 번호형식입니다.";
}
else if($Result=="0044") {
$alert = "스팸문자는발송되지 않습니다.";
}
else {
$alert = "[Error]{$Result}";
}
}
else {
$alert = "Connection Failed";
}
if($nointeractive=="1" && ($Result!="success" && $Result!="Test Success!" && $Result!="reserved") ) {
echo "<script>alert('{$alert}')</script>";
}
else if($nointeractive!="1") {
echo "<script>alert('{$alert}')</script>";
}
//echo "<span style='color:#ffffff;'>문자전송 : {$alert}</span><br>";
//echo "<script>location.href='{$returnurl}';</script>";
}
exit;
1. 문자연동페이지에 삽입할 내용
아래에 post 또는 적용될 내용을 대입합니다.
<?php
//cafe24 문자발송
$sms_action = ""; // 실제발송 go
$sms_smsType = "S"; // S 단문(SMS) L 장문(LMS)
$sms_subject = ""; // 제목
$sms_msg = ""; // 메시지
$sms_rphone = "010-1111-2222"; // 받는번호
$sms_testflag = "Y"; // 테스트발송 Y
include("sms_cafe24.php");
?>
2. sms_cafe24.php 파일 생성
<?php
// cafe24 SMS 발송
$sms_userid = ""; //SMS 아이디.
$sms_secure = ""; //인증키
// 010-3775-0927
$sms_sphone1 = "010"; // 보내는 번호1 예) 010
$sms_sphone2 = ""; // 보내는 번호2 예) 1234
$sms_sphone3 = ""; // 보내는 번호3 예) 5678
$sms_alert = ''; // 성공시 대화 상자(alert)를 사용 1
/*
사용할 경우 : 1
성공시 대화 상자(alert)를 사용 하지 않게 합니다.
*/
//$sms_smsType = $_POST['smsType']; // 발송타입
/*
S 단문(SMS)
L 장문(LMS)
<span><input type="radio" name="smsType" value="S">단문(SMS)</span><span><input type="radio" name="smsType" value="L">장문(LMS)</span> <br />
*/
//$sms_msg = $_POST['msg']; // 메시지
/*
예) SMS = 90 byte 이하, LMS = 2,000 byte 이하 까지 입력 (상단 라디오버튼으로 SMS, LMS 선택)
*/
//$sms_subject = $_POST['subject']; // 제목
/*
예) 안녕하세요. 카페24입니다. 50byte 이하로 입력
장문(LMS)일 경우에만 제목을 입력할 수 있습니다.
수신자 휴대폰 기종에 따라 입력한 제목이 출력되지 않을 수 있습니다.
발송 시 제목이 없으면 [제목없음]으로 발송됩니다.
*/
//$sms_rphone = $_POST['rphone']; // 받는번호
/*
예) 011-012-1234
'-' 포함해서 입력, 받는사람이 여러명이 경우 콤마(,)로 구분해주세요
잘못된 전화번호는 전송되지 않습니다.
※ destination 변수 사용시에는 "" 으로 비워주세요.
*/
$sms_rdate = $_POST['rdate']; // 예약날짜 예) 20080930
$sms_rtime = $_POST['rtime']; // 예약시간
/*
예) 173000
오후 5시 30분
예약시간은 최소 10분 이상으로 설정하셔야합니다.
*/
$sms_returnurl = $_POST['returnurl']; // 리턴 URL
/*
메시지 전송 후 이동할 페이지
( http:// 또는 https:// 를 붙이셔야 합니다. )
*/
//$sms_testflag = "Y"; // 테스트 요청
/*
테스트일 경우 : Y
테스트가 아닐 경우 입력하지 마세요.
실제 sms는 보내지 않으나 단순한 페이지 테스트를 위한 용도
*/
$sms_destination = "";
/*
메시지에 받는 사람 이름을 넣고 싶을 때 이용
destination 값을 "휴대폰번호|이름" 과 같이 '|'문자로 구분해서 입력하시고,
msg값에 “{name}” 이라는 문구를 입력 후 전송하시면 됩니다.
예)
<input type="type" name="destination" value="010-000-0000|홍길동,010-000-0000|김영희">
<input type="type" name="msg" value="{name}님, 주문하신 물품이 배송되었습니다.">
*/
$sms_repeatFlag = ""; // 반복 설정을 원하는 경우 : Y
$sms_repeatNum = ""; // 반복 횟수 1~10회 가능.
$sms_repeatTime = ""; // 반복 시간 15분 이상부터 가능.
//echo "<br>sms_action = {$sms_action}<br>";
if($_POST['sms_action']=='go' || $sms_action=='go'){
/******************** 인증정보 ********************/
$sms_url = "https://sslsms.cafe24.com/sms_sender.php"; // 전송요청 URL
$sms['user_id'] = base64_encode($sms_userid); //SMS 아이디.
$sms['secure'] = base64_encode($sms_secure) ; //인증키
$sms['msg'] = base64_encode(stripslashes($sms_msg));
if( $sms_smsType == "L"){
$sms['subject'] = base64_encode($sms_subject);
}
$sms['rphone'] = base64_encode($sms_rphone);
$sms['sphone1'] = base64_encode($sms_sphone1);
$sms['sphone2'] = base64_encode($sms_sphone2);
$sms['sphone3'] = base64_encode($sms_sphone3);
$sms['rdate'] = base64_encode($sms_rdate);
$sms['rtime'] = base64_encode($sms_rtime);
$sms['mode'] = base64_encode("1"); // base64 사용시 반드시 모드값을 1로 주셔야 합니다.
$sms['returnurl'] = base64_encode($sms_returnurl);
$sms['testflag'] = base64_encode($sms_testflag);
$sms['destination'] = strtr(base64_encode($sms_destination), '+/=', '-,');
$returnurl = $sms_returnurl;
$sms['repeatFlag'] = base64_encode($sms_repeatFlag);
$sms['repeatNum'] = base64_encode($sms_repeatNum);
$sms['repeatTime'] = base64_encode($sms_repeatTime);
$sms['smsType'] = base64_encode($sms_smsType); // LMS일경우 L
$nointeractive = $sms_alert; //사용할 경우 : 1, 성공시 대화상자(alert)를 생략
$host_info = explode("/", $sms_url);
$host = $host_info[2];
$path = $host_info[3]."/".$host_info[4];
srand((double)microtime()*1000000);
$boundary = "---------------------".substr(md5(rand(0,32000)),0,10);
//print_r($sms);
// 헤더 생성
$header = "POST /{$path} HTTP/1.0\r\n";
$header .= "Host: {$host}\r\n";
$header .= "Content-type: multipart/form-data, boundary={$boundary}\r\n";
// 본문 생성
foreach($sms AS $index => $value){
$data .="--{$boundary}\r\n";
$data .= "Content-Disposition: form-data; name=\"{$index}\"\r\n";
$data .= "\r\n{$value}\r\n";
$data .="--{$boundary}\r\n";
}
$header .= "Content-length: ". strlen($data) ."\r\n\r\n";
$fp = fsockopen($host, 80);
if ($fp) {
fputs($fp, $header.$data);
$rsp = '';
while(!feof($fp)) {
$rsp .= fgets($fp,8192);
}
fclose($fp);
$msg = explode("\r\n\r\n",trim($rsp));
$rMsg = explode(",", $msg[1]);
$Result = $rMsg[0]; //발송결과
$Count = $rMsg[1]; //잔여건수
//발송결과 알림
if($Result=="success") {
$alert = "성공";
$alert .= " 잔여건수는 {$Count}건 입니다.";
}
else if($Result=="reserved") {
$alert = "성공적으로 예약되었습니다.";
$alert .= " 잔여건수는 {$Count}건 입니다.";
}
else if($Result=="3205") {
$alert = "잘못된 번호형식입니다.";
}
else if($Result=="0044") {
$alert = "스팸문자는발송되지 않습니다.";
}
else {
$alert = "[Error]{$Result}";
}
}
else {
$alert = "Connection Failed";
}
if($nointeractive=="1" && ($Result!="success" && $Result!="Test Success!" && $Result!="reserved") ) {
echo "<script>alert('{$alert}')</script>";
}
else if($nointeractive!="1") {
echo "<script>alert('{$alert}')</script>";
}
//echo "<span style='color:#ffffff;'>문자전송 : {$alert}</span><br>";
//echo "<script>location.href='{$returnurl}';</script>";
}
exit;
댓글목록
등록된 댓글이 없습니다.