견적내용 장문이 들어 올시 문자가 단문으로 들어 오는데 작성한 내용 다 문자로 보내게 할수 있수 없는까요?
견적내용 장문이 들어 올시 문자가 단문으로만 들어 오는데 작성한 내용 다 문자로 보내게 할수 있수 없는까요?
<?php
/**
* 무료 방문견적 게시판 관리자 SMS/LMS 자동 전환 발송 API
*/
header('Content-Type: application/json; charset=utf-8');
// 그누보드 공통 파일 경로 자동 탐색
$dir = __DIR__;
$loaded = false;
for ($i = 0; $i < 8; $i++) {
if (is_file($dir . '/common.php')) {
include_once($dir . '/common.php');
$loaded = true;
break;
}
$parent = dirname($dir);
if ($parent === $dir) {
break;
}
$dir = $parent;
}
if (!$loaded || !defined('_GNUBOARD_')) {
http_response_code(500);
echo json_encode(array('success' => false, 'message' => '그누보드 공통 파일을 불러오지 못했습니다.'), JSON_UNESCAPED_UNICODE);
exit;
}
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(array('success' => false, 'message' => 'POST 요청만 허용됩니다.'), JSON_UNESCAPED_UNICODE);
exit;
}
$allowed_bo_table = isset($_POST['bo_table']) ? preg_replace('/[^a-zA-Z0-9_]/', '', $_POST['bo_table']) : '';
if ($allowed_bo_table === '') {
http_response_code(400);
echo json_encode(array('success' => false, 'message' => '게시판 정보가 없습니다.'), JSON_UNESCAPED_UNICODE);
exit;
}
// 관리자 수신 번호 고정
$admin_phone = preg_replace('/[^0-9]/', '', '0100000000');
// 입력값 정제
$wr_subject = isset($_POST['wr_subject']) ? clean_xss_tags(trim($_POST['wr_subject'])) : '';
$wr_name = isset($_POST['wr_name']) ? clean_xss_tags(trim($_POST['wr_name'])) : '';
$wr_phone = isset($_POST['wr_phone']) ? preg_replace('/[^0-9]/', '', trim($_POST['wr_phone'])) : '';
$wr_service = isset($_POST['wr_2']) ? clean_xss_tags(trim($_POST['wr_2'])) : '';
$wr_date = isset($_POST['wr_3']) ? clean_xss_tags(trim($_POST['wr_3'])) : '';
$wr_from = isset($_POST['wr_4']) ? clean_xss_tags(trim($_POST['wr_4'])) : '';
$wr_to = isset($_POST['wr_5']) ? clean_xss_tags(trim($_POST['wr_5'])) : '';
$wr_content = isset($_POST['wr_content']) ? clean_xss_tags(trim($_POST['wr_content'])) : '';
if ($wr_name === '' || $wr_phone === '') {
http_response_code(400);
echo json_encode(array('success' => false, 'message' => '고객 성함 또는 연락처가 없습니다.'), JSON_UNESCAPED_UNICODE);
exit;
}
// 아이코드 설정 확인
if (empty($config['cf_icode_id']) || empty($config['cf_icode_pw']) || empty($config['cf_icode_server_ip']) || empty($config['cf_icode_server_port'])) {
http_response_code(500);
echo json_encode(array('success' => false, 'message' => '그누보드 관리자 아이코드 SMS 설정을 확인해주세요.'), JSON_UNESCAPED_UNICODE);
exit;
}
// 1. 발송할 문자 내용 구성
$msg_lines = array();
$msg_lines[] = "성함: " . $wr_name;
$msg_lines[] = "연락처: " . $wr_phone;
if ($wr_service !== '') $msg_lines[] = "서비스: " . $wr_service;
if ($wr_date !== '') $msg_lines[] = "일정: " . $wr_date;
if ($wr_from !== '') $msg_lines[] = "출발: " . $wr_from;
if ($wr_to !== '') $msg_lines[] = "도착: " . $wr_to;
if ($wr_content !== '') $msg_lines[] = "내용: " . $wr_content;
$sms_content = implode("\n", $msg_lines);
$send_number = !empty($config['cf_phone']) ? preg_replace('/[^0-9]/', '', $config['cf_phone']) : $admin_phone;
// 2. EUC-KR 변환 및 바이트 계산 (아이코드 규격 맞춤)
if (!function_exists('iconv')) {
http_response_code(500);
echo json_encode(array('success' => false, 'message' => '서버에서 iconv를 사용할 수 없습니다.'), JSON_UNESCAPED_UNICODE);
exit;
}
$sms_content_utf8 = mb_convert_encoding($sms_content, 'UTF-8', 'UTF-8');
$sms_msg_euc = @iconv('UTF-8', 'EUC-KR//TRANSLIT', $sms_content_utf8);
if ($sms_msg_euc === false) $sms_msg_euc = iconv('UTF-8', 'EUC-KR//IGNORE', $sms_content_utf8);
// 바이트 계산 (한글 2바이트, 영문/숫자/공백 1바이트 기준)
$msg_bytes = strlen($sms_msg_euc);
try {
include_once(G5_LIB_PATH . '/icode.sms.lib.php');
$SMS = new SMS;
$con_result = $SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
if ($con_result === false || (isset($SMS->Result) && $SMS->Result < 0)) {
http_response_code(500);
echo json_encode(array('success' => false, 'message' => 'SMS 서버 연결에 실패했습니다.'), JSON_UNESCAPED_UNICODE);
exit;
}
// 80바이트 초과 시 LMS, 이하 시 SMS(단문) 자동 분기
if ($msg_bytes > 80) {
// LMS인 경우 제목 필수 지정
$sms_title = "[방문견적신청] " . $wr_name . "님 접수 안내";
$sms_title_euc = @iconv('UTF-8', 'EUC-KR//TRANSLIT', $sms_title);
if (method_exists($SMS, 'AddLMS')) {
$SMS->AddLMS($admin_phone, $send_number, $sms_title_euc, $sms_msg_euc, '');
} else {
// AddLMS 메서드가 없을 경우 기존 Add 사용 시 단문으로 짤릴 수 있음
$SMS->Add($admin_phone, $send_number, $config['cf_icode_id'], $sms_msg_euc, '');
}
$send_type = "LMS (장문)";
} else {
// 80바이트 이하 단문 SMS
$SMS->Add($admin_phone, $send_number, $config['cf_icode_id'], $sms_msg_euc, '');
$send_type = "SMS (단문)";
}
$send_result = $SMS->Send();
echo json_encode(array('success' => true, 'message' => $send_type . ' 전송 완료', 'bytes' => $msg_bytes, 'debug' => $send_result), JSON_UNESCAPED_UNICODE);
} catch (Exception $e) {
http_response_code(500);
echo json_encode(array('success' => false, 'message' => '발송 오류: ' . $e->getMessage()), JSON_UNESCAPED_UNICODE);
}
?> 해당 소스 적용시 장문 으로 작성해서 단문문자 크기만큼만 문자가 옵니다. 조언 좀 부탁 드립니다.
<?php
/**
* 무료 방문견적 게시판 관리자 SMS/LMS 자동 전환 발송 API
*/
header('Content-Type: application/json; charset=utf-8');
// 그누보드 공통 파일 경로 자동 탐색
$dir = __DIR__;
$loaded = false;
for ($i = 0; $i < 8; $i++) {
if (is_file($dir . '/common.php')) {
include_once($dir . '/common.php');
$loaded = true;
break;
}
$parent = dirname($dir);
if ($parent === $dir) {
break;
}
$dir = $parent;
}
if (!$loaded || !defined('_GNUBOARD_')) {
http_response_code(500);
echo json_encode(array('success' => false, 'message' => '그누보드 공통 파일을 불러오지 못했습니다.'), JSON_UNESCAPED_UNICODE);
exit;
}
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(array('success' => false, 'message' => 'POST 요청만 허용됩니다.'), JSON_UNESCAPED_UNICODE);
exit;
}
$allowed_bo_table = isset($_POST['bo_table']) ? preg_replace('/[^a-zA-Z0-9_]/', '', $_POST['bo_table']) : '';
if ($allowed_bo_table === '') {
http_response_code(400);
echo json_encode(array('success' => false, 'message' => '게시판 정보가 없습니다.'), JSON_UNESCAPED_UNICODE);
exit;
}
// 관리자 수신 번호 고정
$admin_phone = preg_replace('/[^0-9]/', '', '0100000000');
// 입력값 정제
$wr_subject = isset($_POST['wr_subject']) ? clean_xss_tags(trim($_POST['wr_subject'])) : '';
$wr_name = isset($_POST['wr_name']) ? clean_xss_tags(trim($_POST['wr_name'])) : '';
$wr_phone = isset($_POST['wr_phone']) ? preg_replace('/[^0-9]/', '', trim($_POST['wr_phone'])) : '';
$wr_service = isset($_POST['wr_2']) ? clean_xss_tags(trim($_POST['wr_2'])) : '';
$wr_date = isset($_POST['wr_3']) ? clean_xss_tags(trim($_POST['wr_3'])) : '';
$wr_from = isset($_POST['wr_4']) ? clean_xss_tags(trim($_POST['wr_4'])) : '';
$wr_to = isset($_POST['wr_5']) ? clean_xss_tags(trim($_POST['wr_5'])) : '';
$wr_content = isset($_POST['wr_content']) ? clean_xss_tags(trim($_POST['wr_content'])) : '';
if ($wr_name === '' || $wr_phone === '') {
http_response_code(400);
echo json_encode(array('success' => false, 'message' => '고객 성함 또는 연락처가 없습니다.'), JSON_UNESCAPED_UNICODE);
exit;
}
// 아이코드 설정 확인
if (empty($config['cf_icode_id']) || empty($config['cf_icode_pw']) || empty($config['cf_icode_server_ip']) || empty($config['cf_icode_server_port'])) {
http_response_code(500);
echo json_encode(array('success' => false, 'message' => '그누보드 관리자 아이코드 SMS 설정을 확인해주세요.'), JSON_UNESCAPED_UNICODE);
exit;
}
// 1. 발송할 문자 내용 구성
$msg_lines = array();
$msg_lines[] = "성함: " . $wr_name;
$msg_lines[] = "연락처: " . $wr_phone;
if ($wr_service !== '') $msg_lines[] = "서비스: " . $wr_service;
if ($wr_date !== '') $msg_lines[] = "일정: " . $wr_date;
if ($wr_from !== '') $msg_lines[] = "출발: " . $wr_from;
if ($wr_to !== '') $msg_lines[] = "도착: " . $wr_to;
if ($wr_content !== '') $msg_lines[] = "내용: " . $wr_content;
$sms_content = implode("\n", $msg_lines);
$send_number = !empty($config['cf_phone']) ? preg_replace('/[^0-9]/', '', $config['cf_phone']) : $admin_phone;
// 2. EUC-KR 변환 및 바이트 계산 (아이코드 규격 맞춤)
if (!function_exists('iconv')) {
http_response_code(500);
echo json_encode(array('success' => false, 'message' => '서버에서 iconv를 사용할 수 없습니다.'), JSON_UNESCAPED_UNICODE);
exit;
}
$sms_content_utf8 = mb_convert_encoding($sms_content, 'UTF-8', 'UTF-8');
$sms_msg_euc = @iconv('UTF-8', 'EUC-KR//TRANSLIT', $sms_content_utf8);
if ($sms_msg_euc === false) $sms_msg_euc = iconv('UTF-8', 'EUC-KR//IGNORE', $sms_content_utf8);
// 바이트 계산 (한글 2바이트, 영문/숫자/공백 1바이트 기준)
$msg_bytes = strlen($sms_msg_euc);
try {
include_once(G5_LIB_PATH . '/icode.sms.lib.php');
$SMS = new SMS;
$con_result = $SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
if ($con_result === false || (isset($SMS->Result) && $SMS->Result < 0)) {
http_response_code(500);
echo json_encode(array('success' => false, 'message' => 'SMS 서버 연결에 실패했습니다.'), JSON_UNESCAPED_UNICODE);
exit;
}
// 80바이트 초과 시 LMS, 이하 시 SMS(단문) 자동 분기
if ($msg_bytes > 80) {
// LMS인 경우 제목 필수 지정
$sms_title = "[방문견적신청] " . $wr_name . "님 접수 안내";
$sms_title_euc = @iconv('UTF-8', 'EUC-KR//TRANSLIT', $sms_title);
if (method_exists($SMS, 'AddLMS')) {
$SMS->AddLMS($admin_phone, $send_number, $sms_title_euc, $sms_msg_euc, '');
} else {
// AddLMS 메서드가 없을 경우 기존 Add 사용 시 단문으로 짤릴 수 있음
$SMS->Add($admin_phone, $send_number, $config['cf_icode_id'], $sms_msg_euc, '');
}
$send_type = "LMS (장문)";
} else {
// 80바이트 이하 단문 SMS
$SMS->Add($admin_phone, $send_number, $config['cf_icode_id'], $sms_msg_euc, '');
$send_type = "SMS (단문)";
}
$send_result = $SMS->Send();
echo json_encode(array('success' => true, 'message' => $send_type . ' 전송 완료', 'bytes' => $msg_bytes, 'debug' => $send_result), JSON_UNESCAPED_UNICODE);
} catch (Exception $e) {
http_response_code(500);
echo json_encode(array('success' => false, 'message' => '발송 오류: ' . $e->getMessage()), JSON_UNESCAPED_UNICODE);
}
?> 해당 소스 적용시 장문 으로 작성해서 단문문자 크기만큼만 문자가 옵니다. 조언 좀 부탁 드립니다.
|
답변 2개
답변을 작성하려면 로그인이 필요합니다.