테스트 사이트 - 개발 중인 베타 버전입니다

본문이나 리스트에서 바로 내용 수정시 문자 발송하게 하기 문의 드립니다. 채택완료

masahide 1년 전 조회 2,343

안녕하세요.
검색하여 아래와 같은 방법으로 본문-수정을 거치지 않고 내용 바로 수정가능하게 하려고 합니다.

 

1.
본문(view)에서 바로 수정.

view.skin.php에 아래 내용 추가

<?php

if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가</p>

<p>if($wr_10){

 sql_query("update $write_table set wr_10='$wr_10' where wr_id='$wr_id'");

 $view['wr_10'] = $wr_10;

}

?></p>

<p><script>

$(function(){

  $("input:radio[name='wr_10']").click(function(){

   location.href="도메인/bbs/board.php?bo_table=<?php echo $bo_table?>&wr_id=<?php echo $wr_id?>&wr_10="+$(this).val();

  });

});

</script>

<input type="radio" name="wr_10" value="1" <?php echo ($wr_10 == "1" || $wr_10 == "") ? " checked" : "";?> class="frm_input0" id="wr_10"> 1

<input type="radio" name="wr_10" value="2" <?php echo ($wr_10 == "2") ? " checked" : "";?> class="frm_input0" id="wr_10"> 2

<input type="radio" name="wr_10" value="3" <?php echo ($wr_10 == "3") ? " checked" : "";?> class="frm_input0" id="wr_10"> 3</p>

<p>

원하는대로 수정은 되고 있습니다.
그런데 기존에는 내용 수정을 하면 write_update.skin.php에 설정한대로 문자가 발송되는데, 
이렇게 수정하면 문자 발송이 안되네요. 


2.
리스트에서 바로 수정.
list.skin.php에 아래 내용 추가

<select name="wr_10" id="wr_10_<?php echo $i;?>" onchange="wr10_chk('<?php echo $i;?>','<?php echo $list[$i]['wr_id'];?>',this.value);">

    <option value="" >예약상태</option>

    <option value="1" <? if($list[$i]['wr_10'] == '1') echo " selected "; ?>>1</option>

    <option value="2" <? if($list[$i]['wr_10'] == '2') echo " selected "; ?>>2</option>

    <option value="3" <? if($list[$i]['wr_10'] == '3') echo " selected "; ?>>3</option>

</select>

<script>

 var wr10_chk = function(wr_num,wr_id,field) {

    $.ajax({

        type:"post",

        url:"<?php echo $board_skin_url;?>/list_up.php",

        data:

        {

            bo_table : g5_bo_table,

            wr_num : wr_num,

            wr_id : wr_id,

            wr_10 : field

        },

        dataType:"html",

        success:function(res){

            $("#wr_10_"+wr_num).val(res);

            if(res)

                alert(res+"(으)로 변경되었습니다");

            else

                alert("변경 실패");

        }

    });

}

</script></p>

<p> </p>

<p>list_up.php (게시판 스킨 폴더에 추가)

==========

<?php

include_once("./_common.php");</p>

<p>$write_table = $g5['write_prefix'].$_POST['bo_table'];

$sql = " update ".$write_table." set wr_10 = '".$_POST['wr_10']."' where wr_id = '".$_POST['wr_id']."' ";

sql_query($sql);

$sql = "select * from ".$write_table." where wr_id = '".$_POST['wr_id']."' ";

$row = sql_fetch($sql);

 

if($row['wr_10'])

  echo $row['wr_10'];

else

 echo '';

이것 역시 원하는대로 수정은 되고 있습니다. 
(단, 1번은 수정시 수정 내용이 바로 적용되는데, 이건 수정하고 새로고침해야 수정된 내용을 확인 할 수 있습니다.)

 

이것 역시 문자 발송이 안되서 list_up.php 내용하단에 write_update.skin.php 에 있는 문자 보내기 설정 내용을 넣었지만 역시나 작동을 하지 않습니다.

 

아래는 write_update.skin.php의 문자 보내기 부분입니다.

<?php

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가</p>

<p>

$wr_3 = "$tel1-$tel2-$tel3"; 

$sql3  = "update $write_table set wr_3 = '$wr_3' where wr_id = '$wr_id' ";

sql_query($sql3);</p>

<p>$wr_url = get_pretty_url($bo_table, $wr_id);

$wr_url = str_replace($bo_table, $bo_table . '1', $wr_url);</p>

<p>$sms_contents = "문자내용";

$sms_title = "타이틀;

$sms_title2 = "타이틀";

    

if ($wr_10 == "2") {

$sms_contents2 = "문자내용";

}

if ($wr_10 == "3") {

$sms_contents2 = "문자내용";

}</p>

<p>$receive_number = preg_replace("/[^0-9]/", "", $sms5['cf_phone']);  // 수신자번호

$send_number = preg_replace("/[^0-9]/", "", $sms5['cf_phone']); // 발신자번호

$receive_number2 = preg_replace("/[^0-9]/", "", $wr_3);  // 고객번호</p>

<p>

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');</p>

<p>            $port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);</p>

<p>            // 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);</p>

<p>                $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);</p>

<p>                $res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);</p>

<p>                $SMS->Send();

                $SMS->Init(); // 보관하고 있던 결과값을 지웁니다.

            }

        } else {

            include_once(G5_LIB_PATH.'/icode.sms.lib.php');</p>

<p>            $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(); // 보관하고 있던 결과값을 지웁니다.

        }

    }

        }</p>

<p>// 2, 3

if($w=="u" && $is_admin )  {</p>

<p>    if ($config['cf_sms_use'] == 'icode')

    {

        if($config['cf_sms_type'] == 'LMS') {

            include_once(G5_LIB_PATH.'/icode.lms.lib.php');</p>

<p>            $port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);</p>

<p>            // 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);</p>

<p>                $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);</p>

<p>                $res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);</p>

<p>                $SMS->Send();

                $SMS->Init(); // 보관하고 있던 결과값을 지웁니다.

            }

        } else {

            include_once(G5_LIB_PATH.'/icode.sms.lib.php');</p>

<p>            $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(); // 보관하고 있던 결과값을 지웁니다.

        }

    }

            

        }</p>

<p>

 

어떻게 해야 1번이나 2번 사용시 문자보내기가 가능할까요?
아시는 분 도움 주시면 정말 감사하겠습니다.

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

답변 4개

채택된 답변
+20 포인트

저기보면 문자 내용 이랑 그런거 한글로 써있는데 그대로 기재하면 될거에요

밑에 api 로 연결된 부분 기능은 냅두시구요~ 그대로 위에 변수에 기재만 하면되요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 14개

m
masahide
1년 전
친절하신 답변 감사합니다.
write_update.skin.php 의
$wr_3 = "$tel1-$tel2-$tel3"; 부터 모든 내용을
list_up.php 하단에 넣었는데 작동이 안되더라고요.
오히려wr_3의 값이 삭제가 되어 버리고요.
리오닥터
1년 전
$tel1-$tel2-$tel3 이거를 빼고 $wr_3 = "번호" 으로 바꿔주세요
m
masahide
1년 전
$wr_3 = "번호"
임의로 "번호"에 핸드폰번호를 넣으라는 말씀이신가요?
저 번호가 수신번호라서 wr_3을 불러와야 하는 건데...

지금 write가 이런 구조로 되어 있습니다.
<?php
$wr_3 = explode("-",$write['wr_3']);
$tel1 = $wr_3[0];
$tel2 = $wr_3[1];
$tel3 = $wr_3[2];
?>
<tr>
<th scope="row"><label for="wr_name">휴대전화<strong class="sound_only">필수</strong></label></th>
<td><div class="d-md-none request"><label for="wr_name">휴대전화<strong class="sound_only">필수</strong></label></div>
<select name="tel1" id="tel1" class="frm_input required tel1" required>
<option value="010" <?=($tel1 == "010")?'selected':'';?>>010</option>
</select> -
<input name="tel2" class="frm_input tel2 required" type="text" maxlength="4" id="tel2" value="<?=$tel2?>"> -
<input name="tel3" class="frm_input tel2 required" type="text" maxlength="4" id="tel3" value="<?=$tel3?>">
</td>
</tr>

그리고...
가장 중요한건 $wr_3 = "010-XXXX-XXXX"이런식으로 임의로 숫자를 적어 놓으면 wr_3의 값이 임의로 적어 놓은 숫자로 바뀌기는 하는데,
문자는 역시나 발송이 되지 않고 있습니다.
m
masahide
1년 전
이 글을 참고했고,
https://sir.kr/qa/494503
채택된 답변을 보면 그냥은 안되고 수정을 해야 하는거 같은데,
댓글과 같은 스타일로 수정을 해봐도 안되더라고요.
아마도 중간에 생략했다는 내용이 중요한듯한데, 제가 그걸 잘 몰라서...
리오닥터
1년 전
에러 내용 안나오나요?
error_reporting(E_ALL);
ini_set('display_errors', 1);

위에 내용 남겨주세요
m
masahide
1년 전
에러 나오는 화면 캡쳐해서 댓글에 따로 첨부했습니다.
리스트에서 상태변경 수정은 정상적으로 되고, 문자 부분에서 에러가 나는 상황입니다.
m
masahide
1년 전
친절하신 답변 감사합니다.
세크티님께서 처음 남겨주신 답변도 같은 내용인거 같은데,
그걸 어떤식으로 구현을 해야 하는지 모르겠어서 문의를 드렸습니다.
제가 링크로 남긴 곳의 댓글에 대략적인 방법이 있어서 따라해 봤지만 중간 내용이 생략되어 있어서 실행이 안되더라고요.
일단 다시한번 해보겠습니다.
리오닥터
1년 전
포스트값 디버깅 print_r2($_POST); 이렇게해서 확인해보세요
m
masahide
1년 전
계속 시간내주셔서 감사합니다.
새로 댓글에 첨부한 화면처럼
wr_num, wr_id, wr_10값은 가져오는 걸로 보여지고 나머지는 이전화 동일합니다.

참고했던 링크의 댓글 보고 이런식으로 해보기도 했지만 아무런 변화는 없고요.
$wr_10 = $row['wr_10'];
$wr_3 = $row['$wr_3'];
$wr_name = $row['$wr_name'];
리오닥터
1년 전
$wr_3 = $row['wr_3'];
$wr_name = $row['wr_name']; 오타 났어요
m
masahide
1년 전
네. 제 나름대로 계속 이리저리 수정해 보고 있는데 잘 안되네요.
일단 오늘밤 동안 계속 해보고 그래도 안되면 다시 문의 올리겠습니다.
시간내 주셔서 감사합니다.
리오닥터
1년 전
네~ 아이코드가 답답한게 매뉴얼이 없다보니~ 이게 api 에서도 에러코드를 나와야지 확인 가능하거든요
만약에 저 변수들 제대로 입력해서도 문제가 된다면 api를 바꾸던지 해야되요
m
masahide
1년 전
아... 지금보니 오타도 있었네요.
일단 계속 해보고 내일 결과 남기겠습니다.
감사합니다.
m
masahide
1년 전
결국 실패했습니다.
그리고 지금보니 list_up.php에 문자 관련 소스 넣고
번호, 제목, 내용 등 임의로 넣어도 문자 발송자체가 안되고 있네요.
쩝... 그냥 포기해야겠습니다.

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

m
1년 전

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

리오닥터
1년 전
응용을 해보세요.. 저 에러 내용 보면 전화번호도 010-####-#### 이런 형식으로 변경해보세요

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

m
1년 전

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

리오닥터
1년 전
변수에서 값이 없는거에요
테스트 할때는 $wr_name = "테스트"; 이렇게 임의로 넣어서 하시고
외부에서 ajax 로 땡겨 올떄는 post로 해서 넘겨주면되요

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

세크티
1년 전

write_update.skin.php은 수정페이지서 수정했을때만 실행됩니다.

write_update.skin.php의 내용을 함수로 만들어서 wr_10이 수정되는곳에 각각 넣는방식으로 변경하셔야합니다

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

m
masahide
1년 전
친절하신 답변 감사합니다.
그 방법을 몰라서 문의 드렸는데 대략 어떤식으로 해야 하는지 힌트 좀 주실 수 있으신가요?

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

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

로그인