제가 사용하는 소스가 너무 지저분해서 좀 간결하게 하고 싶습니다.
본문
안녕하세요.
아래는 제가 그누보드5 게시판 write_update.skin.php에 사용하는 소스입니다.
1. 게시판에 글이 등록 시 자동으로 관리자와 작성자에게 문자 발송되고
2. 관리자가 글 수정 시 $wr_10의 값에 따라 설정된 문구가 작성자에게 문자로 발송됩니다.
3. 관리자가 글 수정 시 $wr_10 ==이 2, 4, 5일 때만 관리자에게 동일한 내용의 문자가 발송됩니다.
4. 관리자가 글 수정 시 $wr_10 ==이 2면 관리자2에게, $wr_10 ==이 4이면 관리자3에게, $wr_10 ==이5이면 관리자4에게 문자가 발송됩니다.
작동은 정상적으로 잘 되고 있습니다.
하지만 제가 기본 지식이 없는 상태에서 계속 내용을 추가하고 수정하다 보니 소스가 상당히 길고 지저분합니다.
분명 중복되는 부분을 간단하게 할 수 있을 거 같은데 잘 모르겠습니다.
시간 되시는 분 한번 살펴봐주시고 간단히 줄이는 방법을 좀 알려주시면 제가 해보겠습니다.
감사합니다.
// 수신 발신 전화번호.
$receive_number = // 관리자
$receive_number3 = // 관리자3
$receive_number4 = // 관리자4
$receive_number5 = // 관리자5
$receive_number2 = // 작성자
// -----------------------------------------------------------------------------------
// 글 등록시 관리자에게 자동 문자 문구.
$sms_contents = "문자문구 ";
// 글 등록시 작성자에게 자동 문자 문구.
$sms_contents1 = "문자문구 1111";
// 관리자가 수정시 wr_10 값이 2일 때 작성자에게 보내는 문자 문구.
if ($wr_10 == "2") {
$sms_contents2 = "문자문구 2222";
}
// 관리자가 수정시 wr_10 값이 3일 때 작성자에게 보내는 문자 문구.
if ($wr_10 == "3") {
$sms_contents2 = "문자문구 3333";
}
// 관리자가 수정시 wr_10 값이 4일 때 작성자에게 보내는 문자 문구.
if ($wr_10 == "4") {
$sms_contents2 = "문자문구4444";
}
// 관리자가 수정시 wr_10 값이 5일 때 작성자에게 보내는 문자 문구.
if ($wr_10 == "5") {
$sms_contents2 = "문자문구5555";
}
// (공통) 관리자가 수정시 관리자들에게 보내는 문자 문구.
$sms_contents0 = "공통 문자 문구";
// 관리자가 수정시 wr_10 값이 2일 때 관리자에게 보내는 문자 문구.
if ($wr_10 == "2") {
$sms_contents3 = $sms_contents0;
}
// 관리자가 수정시 wr_10 값이 4일 때 관리자에게 보내는 문자 문구.
if ($wr_10 == "4") {
$sms_contents4 = $sms_contents0;
}
// 관리자가 수정시 wr_10 값이 5일 때 관리자에게 보내는 문자 문구.
if ($wr_10 == "5") {
$sms_contents5 = $sms_contents0;
}
// -----------------------------------------------------------------------------------
// 글 등록시 관리자에게 자동 문자 발송.
if( $w=="" && !$is_admin ) {
if ($config['cf_sms_use'] == 'icode')
{
if($config['cf_sms_type'] == 'LMS') {
include_once(G5_LIB_PATH.'/icode.lms.lib.php');
$port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);
// SMS 모듈 클래스 생성
if($port_setting !== false) {
$SMS = new LMS;
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
$strDest = array();
$strDest[] = $receive_number;
$strCallBack = $send_number;
$strCaller = iconv_euckr(trim($config['cf_title']));
$strSubject = iconv_euckr($sms_title);
$strURL = '';
$strData = iconv_euckr($sms_contents);
$strDate = '';
$nCount = count($strDest);
$res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
} else {
include_once(G5_LIB_PATH.'/icode.sms.lib.php');
$SMS = new SMS; // SMS 연결
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
$SMS->Add($receive_number, $send_number, $config['cf_icode_id'], iconv_euckr(stripslashes($sms_contents)), "");
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
}
}
// 글 등록시 작성자에게 자동 문자 발송.
if( $w=="" && !$is_admin ) {
if ($config['cf_sms_use'] == 'icode')
{
if($config['cf_sms_type'] == 'LMS') {
include_once(G5_LIB_PATH.'/icode.lms.lib.php');
$port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);
// SMS 모듈 클래스 생성
if($port_setting !== false) {
$SMS = new LMS;
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
$strDest = array();
$strDest[] = $receive_number2;
$strCallBack = $send_number;
$strCaller = iconv_euckr(trim($config['cf_title']));
$strSubject = iconv_euckr($sms_title);
$strURL = '';
$strData = iconv_euckr($sms_contents1);
$strDate = '';
$nCount = count($strDest);
$res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
} else {
include_once(G5_LIB_PATH.'/icode.sms.lib.php');
$SMS = new SMS; // SMS 연결
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
$SMS->Add($receive_number2, $send_number, $config['cf_icode_id'], iconv_euckr(stripslashes($sms_contents1)), "");
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
}
}
// -----------------------------------------------------------------------------------
// 관리자가 수정시 wr_10 값에 따라 작성자에게 문자 발송.
if($w=="u" && $is_admin ) {
if ($config['cf_sms_use'] == 'icode')
{
if($config['cf_sms_type'] == 'LMS') {
include_once(G5_LIB_PATH.'/icode.lms.lib.php');
$port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);
// SMS 모듈 클래스 생성
if($port_setting !== false) {
$SMS = new LMS;
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
$strDest = array();
$strDest[] = $receive_number2;
$strCallBack = $send_number;
$strCaller = iconv_euckr(trim($config['cf_title']));
$strSubject = iconv_euckr($sms_title2);
$strURL = '';
$strData = iconv_euckr($sms_contents2);
$strDate = '';
$nCount = count($strDest);
$res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
} else {
include_once(G5_LIB_PATH.'/icode.sms.lib.php');
$SMS = new SMS; // SMS 연결
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
$SMS->Add($receive_number2, $send_number, $config['cf_icode_id'], iconv_euckr(stripslashes($sms_contents2)), "");
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
}
}
// -----------------------------------------------------------------------------------
// 관리자가 수정시($wr_10 == "2") 관리자에게 문자 발송.
if($w=="u" && $is_admin ) {
if ($config['cf_sms_use'] == 'icode')
{
if($config['cf_sms_type'] == 'LMS') {
include_once(G5_LIB_PATH.'/icode.lms.lib.php');
$port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);
// SMS 모듈 클래스 생성
if($port_setting !== false) {
$SMS = new LMS;
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
$strDest = array();
$strDest[] = $receive_number;
$strCallBack = $send_number;
$strCaller = iconv_euckr(trim($config['cf_title']));
$strSubject = iconv_euckr($sms_title2);
$strURL = '';
$strData = iconv_euckr($sms_contents3);
$strDate = '';
$nCount = count($strDest);
$res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
} else {
include_once(G5_LIB_PATH.'/icode.sms.lib.php');
$SMS = new SMS; // SMS 연결
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
$SMS->Add($receive_number, $send_number, $config['cf_icode_id'], iconv_euckr(stripslashes($sms_contents3)), "");
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
}
}
// 관리자가 수정시($wr_10 == "4") 관리자에게 문자 발송.
if($w=="u" && $is_admin ) {
if ($config['cf_sms_use'] == 'icode')
{
if($config['cf_sms_type'] == 'LMS') {
include_once(G5_LIB_PATH.'/icode.lms.lib.php');
$port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);
// SMS 모듈 클래스 생성
if($port_setting !== false) {
$SMS = new LMS;
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
$strDest = array();
$strDest[] = $receive_number;
$strCallBack = $send_number;
$strCaller = iconv_euckr(trim($config['cf_title']));
$strSubject = iconv_euckr($sms_title2);
$strURL = '';
$strData = iconv_euckr($sms_contents4);
$strDate = '';
$nCount = count($strDest);
$res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
} else {
include_once(G5_LIB_PATH.'/icode.sms.lib.php');
$SMS = new SMS; // SMS 연결
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
$SMS->Add($receive_number, $send_number, $config['cf_icode_id'], iconv_euckr(stripslashes($sms_contents4)), "");
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
}
}
// 관리자가 수정시($wr_10 == "5") 관리자에게 문자 발송.
if($w=="u" && $is_admin ) {
if ($config['cf_sms_use'] == 'icode')
{
if($config['cf_sms_type'] == 'LMS') {
include_once(G5_LIB_PATH.'/icode.lms.lib.php');
$port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);
// SMS 모듈 클래스 생성
if($port_setting !== false) {
$SMS = new LMS;
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
$strDest = array();
$strDest[] = $receive_number;
$strCallBack = $send_number;
$strCaller = iconv_euckr(trim($config['cf_title']));
$strSubject = iconv_euckr($sms_title2);
$strURL = '';
$strData = iconv_euckr($sms_contents5);
$strDate = '';
$nCount = count($strDest);
$res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
} else {
include_once(G5_LIB_PATH.'/icode.sms.lib.php');
$SMS = new SMS; // SMS 연결
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
$SMS->Add($receive_number, $send_number, $config['cf_icode_id'], iconv_euckr(stripslashes($sms_contents5)), "");
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
}
}
// -----------------------------------------------------------------------------------
// 관리자가 수정시($wr_10 == "2") 관리자3에게 문자 발송.
if($w=="u" && $is_admin ) {
if ($config['cf_sms_use'] == 'icode')
{
if($config['cf_sms_type'] == 'LMS') {
include_once(G5_LIB_PATH.'/icode.lms.lib.php');
$port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);
// SMS 모듈 클래스 생성
if($port_setting !== false) {
$SMS = new LMS;
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
$strDest = array();
$strDest[] = $receive_number3;
$strCallBack = $send_number;
$strCaller = iconv_euckr(trim($config['cf_title']));
$strSubject = iconv_euckr($sms_title2);
$strURL = '';
$strData = iconv_euckr($sms_contents3);
$strDate = '';
$nCount = count($strDest);
$res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
} else {
include_once(G5_LIB_PATH.'/icode.sms.lib.php');
$SMS = new SMS; // SMS 연결
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
$SMS->Add($receive_number5, $send_number, $config['cf_icode_id'], iconv_euckr(stripslashes($sms_contents3)), "");
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
}
}
// 관리자가 수정시($wr_10 == "4") 관리자4에게 문자 발송.
if($w=="u" && $is_admin ) {
if ($config['cf_sms_use'] == 'icode')
{
if($config['cf_sms_type'] == 'LMS') {
include_once(G5_LIB_PATH.'/icode.lms.lib.php');
$port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);
// SMS 모듈 클래스 생성
if($port_setting !== false) {
$SMS = new LMS;
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
$strDest = array();
$strDest[] = $receive_number4;
$strCallBack = $send_number;
$strCaller = iconv_euckr(trim($config['cf_title']));
$strSubject = iconv_euckr($sms_title2);
$strURL = '';
$strData = iconv_euckr($sms_contents4);
$strDate = '';
$nCount = count($strDest);
$res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
} else {
include_once(G5_LIB_PATH.'/icode.sms.lib.php');
$SMS = new SMS; // SMS 연결
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
$SMS->Add($receive_number6, $send_number, $config['cf_icode_id'], iconv_euckr(stripslashes($sms_contents4)), "");
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
}
}
// 관리자가 수정시($wr_10 == "5") 관리자4에게 문자 발송.
if($w=="u" && $is_admin ) {
if ($config['cf_sms_use'] == 'icode')
{
if($config['cf_sms_type'] == 'LMS') {
include_once(G5_LIB_PATH.'/icode.lms.lib.php');
$port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);
// SMS 모듈 클래스 생성
if($port_setting !== false) {
$SMS = new LMS;
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
$strDest = array();
$strDest[] = $receive_number5;
$strCallBack = $send_number;
$strCaller = iconv_euckr(trim($config['cf_title']));
$strSubject = iconv_euckr($sms_title2);
$strURL = '';
$strData = iconv_euckr($sms_contents5);
$strDate = '';
$nCount = count($strDest);
$res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
} else {
include_once(G5_LIB_PATH.'/icode.sms.lib.php');
$SMS = new SMS; // SMS 연결
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
$SMS->Add($receive_number7, $send_number, $config['cf_icode_id'], iconv_euckr(stripslashes($sms_contents5)), "");
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
}
}
!-->
답변 1
주석도 포함하였습니다. sms 발송 코드가 많아 함수로 처리하면 조금 더 간략하게 표현이 가능합니다.
<?php
// 전화번호 목록 설정
// 수신받을 대상들의 전화번호를 배열로 설정합니다.
// 'admin'은 관리자, 'writer'는 작성자 등의 키를 사용해 쉽게 식별할 수 있도록 합니다.
$receive_numbers = [
'admin' => $receive_number, // 기본 관리자 전화번호
'admin3' => $receive_number3, // 추가 관리자3 전화번호
'admin4' => $receive_number4, // 추가 관리자4 전화번호
'admin5' => $receive_number5, // 추가 관리자5 전화번호
'writer' => $receive_number2 // 작성자 전화번호
];
// 문자 문구 목록 설정
// 문자 발송 시 사용할 각 상황별 문자 내용을 배열로 설정합니다.
$sms_contents = [
'new_post_admin' => "문자문구", // 글 등록 시 관리자에게 보낼 문자 내용
'new_post_writer' => "문자문구 1111", // 글 등록 시 작성자에게 보낼 문자 내용
'update_writer' => [
'2' => "문자문구 2222", // 글 수정 시 wr_10 값이 2일 때 작성자에게 보낼 문자 내용
'3' => "문자문구 3333", // 글 수정 시 wr_10 값이 3일 때 작성자에게 보낼 문자 내용
'4' => "문자문구 4444", // 글 수정 시 wr_10 값이 4일 때 작성자에게 보낼 문자 내용
'5' => "문자문구 5555" // 글 수정 시 wr_10 값이 5일 때 작성자에게 보낼 문자 내용
],
'update_admin' => "공통 문자 문구" // 글 수정 시 관리자가 받을 공통 문자 내용
];
// SMS 발송 함수
// SMS 발송 로직을 함수로 정의하여 중복 코드를 제거하고 재사용성을 높였습니다.
// $receive_number: 수신자 번호
// $send_number: 발신자 번호
// $sms_content: 문자 내용
// $sms_title: 문자 제목 (옵션)
function send_sms($receive_number, $send_number, $sms_content, $sms_title = '') {
global $config;
// SMS 설정이 'icode'인 경우에만 발송 진행
if ($config['cf_sms_use'] == 'icode') {
// LMS 타입(SMS보다 긴 문자 메시지)인 경우
if ($config['cf_sms_type'] == 'LMS') {
include_once(G5_LIB_PATH . '/icode.lms.lib.php');
$port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);
if ($port_setting !== false) {
// LMS 클래스 생성 및 설정
$SMS = new LMS;
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
$strDest = [$receive_number]; // 수신자 번호 설정
$strCallBack = $send_number; // 발신자 번호 설정
$strCaller = iconv_euckr(trim($config['cf_title'])); // 발신자 이름 설정 (인코딩)
$strSubject = iconv_euckr($sms_title); // 문자 제목 설정 (인코딩)
$strData = iconv_euckr($sms_content); // 문자 내용 설정 (인코딩)
$nCount = count($strDest); // 수신자 수 설정
$SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, '', $strData, '', $nCount);
$SMS->Send();
$SMS->Init(); // SMS 전송 후 결과값 초기화
}
} else {
// 일반 SMS 타입인 경우
include_once(G5_LIB_PATH . '/icode.sms.lib.php');
$SMS = new SMS;
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
$SMS->Add($receive_number, $send_number, $config['cf_icode_id'], iconv_euckr(stripslashes($sms_content)), "");
$SMS->Send();
$SMS->Init(); // SMS 전송 후 결과값 초기화
}
}
}
// 글 등록 시 관리자 및 작성자에게 문자 발송
// 글이 새로 등록되었을 때 관리자와 작성자에게 각각 알림 문자를 발송합니다.
if ($w == "" && !$is_admin) {
// 관리자에게 문자 발송
send_sms($receive_numbers['admin'], $send_number, $sms_contents['new_post_admin']);
// 작성자에게 문자 발송
send_sms($receive_numbers['writer'], $send_number, $sms_contents['new_post_writer']);
}
// 관리자가 수정 시 작성자 및 관리자에게 문자 발송
// 글이 수정되었을 때, 특정 조건에 따라 작성자와 관리자에게 문자를 발송합니다.
if ($w == "u" && $is_admin) {
// wr_10 값에 따라 작성자에게 문자 발송
if (isset($sms_contents['update_writer'][$wr_10])) {
send_sms($receive_numbers['writer'], $send_number, $sms_contents['update_writer'][$wr_10]);
}
// wr_10 값이 2, 4, 5인 경우 관리자가 추가로 문자를 받습니다.
if ($wr_10 == "2" || $wr_10 == "4" || $wr_10 == "5") {
// 기본 관리자에게 문자 발송
send_sms($receive_numbers['admin'], $send_number, $sms_contents['update_admin']);
// wr_10 값에 따라 추가 관리자에게 문자 발송
if ($wr_10 == "2") {
send_sms($receive_numbers['admin3'], $send_number, $sms_contents['update_admin']);
} elseif ($wr_10 == "4") {
send_sms($receive_numbers['admin4'], $send_number, $sms_contents['update_admin']);
} elseif ($wr_10 == "5") {
send_sms($receive_numbers['admin5'], $send_number, $sms_contents['update_admin']);
}
}
}
?>
답변을 작성하시기 전에 로그인 해주세요.