문자메세지 발송 시 줄바꿈 한 것이 한줄로 바뀌어 전송됩니다..

문자메세지 발송 시 줄바꿈 한 것이 한줄로 바뀌어 전송됩니다..

QA

문자메세지 발송 시 줄바꿈 한 것이 한줄로 바뀌어 전송됩니다..

본문

안녕하세요!

그누보드에서 SMS 전송 기능을 자주 이용하고 있습니다.

 

그누보드5 버전 5.4.16을 수개월간 사용하다 업데이트 패치를 순차적으로 덮어씌우는 방식으로

최신버전인 5.5.7.5까지 업데이트를 해놓은 상태입니다.

 

최신 버전 업데이트 후

관리자페이지에서 문자 발송 시 SMS건 LMS건

엔터를 쳐놓고 전송하면 엔터친게 전부 무시되고 한줄로 출력되어 전송됩니다.

 

안녕하세요

안녕하세요

안녕하세요

 

이렇게 보내놓으면

 

안녕하세요안녕하세요안녕하세요

 

이렇게...

 

실제로 전송되는 SMS 내용도 마찬가지지만 전송결과 페이지의 textarea 부분에도 개행이 생략된 채로 출력이됩니다.

 

그런데 본문 내용에 개행문자인 '\n'를 줄바꿈하고 싶은 곳에 넣은 후 보내면

개행문자 넣은 곳은 줄바꿈이 정상적으로 이루어집니다.

 

개발자는 아니라서 문제를 어떻게 추적해야 하고 원인이 무엇인지는 잘 몰라서...

어떻게든 구글링하고 QNA 뒤져보고 해서 정답을 찾아보려고 했지만 같은 문제를 겪은 사례는 보이지 않더라구요..ㅜㅜ

 

스크립트 단에서 개행이 제대로 이루어지고 있는지 파악하려고 alert도 넣어봤지만 어느 부분에서 코드가 실행되는지도 확실히 알 수가 없다보니...

 

이윰빌더를 같이 사용하고 있는데 이게 문제일 가능성을 생각해 봤지만

이윰관리자에서 보내던 그누관리자에서 보내던 결과는 똑같이 줄바꿈이 되지 않은 채 보내집니다..

 

SMS 전송 관련 코드 수정한 것은 없습니다..

유일하게 하나 걸리는 것은 지금 설치되어 있는 이윰빌더 버전은 그누보드 5.5.7 버전까지만 대응되어 있는 것으로 나타나는데 지금 설치한 것은 5.5.7.5라는 것인데... 

이게 문제일 수도 있을까요?

 

================================================

방금 테스트하면서 확인한 내용 추가합니다.

 

adm/sms_admin/sms_write_send.php 파일의 시작부분 쯤에

 alert($wr_message); 

를 입력하고 문자 전송을 해보니

 

줄바꿈 했던 부분이 무시되어 한줄로 팝업메시지가 출력되는 것을 확인했습니다.

 

sms_write.php 파일에서 어딘가를 확인해 보아야 할 것 같은데,

딱히 짐작가는 부분이 없습니다..

 

하단 스크립트 중간에

 
if ($wr_no)
{
    // 메세지와 회신번호
    $row = sql_fetch(" select * from {$g5['sms5_write_table']} where wr_no = '$wr_no' ");
    echo "<script>\n";
    echo "var hp_list = document.getElementById('hp_list');\n";
    //echo "add(\"$row[wr_message]\");\n";
    $wr_message = str_replace('"', '\"', $row['wr_message']);
    $wr_message = str_replace(array("\r\n","\n"), "\\n", $wr_message);
    echo "add(\"$wr_message\");\n";
    echo "document.getElementById('wr_reply').value = '{$row['wr_reply']}';\n";
    // 회원목록
...

부분이 있는 것을 확인했는데 이 부분에 alert를 집어넣어봤지만 실행되지도 않고

F12 눌러서 html 소스를 보니깐 아예 저부분은 소스가 없더라고요,,

무지한 글 읽어주셔서 감사합니다...ㅜㅜ

이 질문에 댓글 쓰기 :

답변 1

마지막 내용 부분은..

 

if ($wr_no) 의 의미가,

이미 발송한 SMS 내역을 불러오는 경우입니다.

 

그래서 신규 작성인 경우에는 해당 코드가 실제로 실행되지는 않습니다. -> 소스보기X, 디버깅 코드X 이유

 

질문 내용만으로는 정확한 원인을 알기 어렵습니다.

관련 부분 디버깅/테스트를 반복하여 문제 지점/정확한 원인을 찾아야 합니다.

 

계속해서 답변이 없다면, 의뢰 게시판을 이용해 볼 수 있습니다. https://sir.kr/request

 

안녕하세요. 답변 감사드립니다.
조금 더 삽질을 한 끝에 원인을 조금 찾은 것 같습니다.
아마 clean_xss_tags 기능 때문에 발생하는 문제 같습니다.

sms_write_send.php 파일에서

$wr_message = isset($_REQUEST['wr_message']) ? clean_xss_tags(trim($_REQUEST['wr_message'])) : '';

부분을
$wr_message = $_REQUEST['wr_message'];

로 바꾸니 줄바꿈이 가능해졌습니다.

그리고 common.lib.php 파일에 보니 clean_xss_tags 기능에
// tab('\t'), formfeed('\f'), vertical tab('\v'), newline('\n'), carriage return('\r') 를 제거한다.
    $str = preg_replace("#[\t\f\v\n\r]#", '', $str);

가 있는 것을 확인하였습니다.

일단 sms_write_send.php에서 clean_xss_tags를 제거하면 문제는 해결되지만 이게 보안상에 문제가 발생할지도 몰라 걱정입니다만... 이대로 써도 될지, 아니면 common.lib.php에서 어떤 예외처리를 하는 방법을 써야하는지 알 수 있을까요?

답변을 작성하시기 전에 로그인 해주세요.
전체 54
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT