이전 목록 다음

견적내용 장문이 들어 올시 문자가 단문으로 들어 오는데 작성한 내용 다 문자로 보내게 할수 있수 없는까요?

견적내용 장문이 들어 올시  문자가  단문으로만   들어 오는데  작성한 내용 다  문자로 보내게 할수 있수 없는까요?

<?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개

아래 답변처럼 단문으로만 전송된다면 소스의 조건문에서 AddLMS를 체크할때

없는 메소드로 인식하는지 체크가 필요하네요.. 
// AddLMS 메서드가 없을 경우 기존 Add 사용 시 단문으로 짤릴 수 있음--- 여기에 걸리는 건지 찍어 보시는게 좋겠습니다.

답변을 작성하려면 로그인이 필요합니다.