단어필터링관련 게시판이동하게 하기 질문이요

단어필터링관련 게시판이동하게 하기 질문이요

QA

단어필터링관련 게시판이동하게 하기 질문이요

답변 1

본문

그누5에 단어필터링은 있거든요 근데 제가 구현하고 싶은건 조금 다른데요

금지단어가 포함된 글을 등록했을시 금지단어게시판이란 이름의 게시판으로

작성글이 이동되게 만들고 싶습니다 이거 어떻게 해야하는지 감이 안옵니다..고수님들 도와주셔요

 

이 질문에 댓글 쓰기 :

답변 1

잠깐 생각을 해본 것인데, 잘 적용될지는 모르겠습니다.

 

write.skin.php 에 보면 다음의 코드가 있는데..


        if (subject) {
            alert("제목에 금지단어('"+subject+"')가 포함되어있습니다");
            f.wr_subject.focus();
            return false;
        }
        if (content) {
            alert("내용에 금지단어('"+content+"')가 포함되어있습니다");
            if (typeof(ed_wr_content) != "undefined")
                ed_wr_content.returnFalse();
            else
                f.wr_content.focus();
            return false;
        }

 

 

위의 코드를 다음과 같이 변경하면 되지 않을까 합니다.


         <?php if ($w == "") { ?>            
        if (subject || content) {
            f.bo_table.value = "tmp"; // 게시판 ID
        }
        <?php } ?>

write.skin.php 에서

윗 코드 부분을 삭제하고,
아랫코드 부분으로 대체하면 된다는 의미로 말씀드린 것입니다.

다만, 아랫코드 부분에서 "tmp" 는 예제 테이블 ID 이고, 실제 금지단어 게시판의 ID 로 맞춰주시면 됩니다.

좀전에 '테스트를 해보았다'고 쓴 댓글은 삭제하였습니다.

(순간 회피하려고 거짓으로 댓글을 달았습니다.)

죄송합니다. 거짓으로 쓴 댓글에 대해 다시한번 사과드립니다.


당시 테스트를 해보지는 못했고, 당시 write.skin.php 소스만 잠깐 보고 답을 달았었습니다.

지금 테스트를 해보았고, 문제가 있다는 것을 확인하였습니다.

bo_table 임의 변경에 대해 체크를 하는 로직에서 걸리는 것 같습니다.

일단 그 부분에 대한 해결방법 중 하나는,

/bbs/write_update.php 의 상단에서

check_write_token($bo_table); 부분을,

if ($bo_table != "tmp") // 금지단어 게시판 ID
  check_write_token($bo_table);

로 추가로 수정해 주어야 할 듯 합니다.

기본환경설정에서 admin이란 필터링단어를 넣고 말씀해주신대로 테스트를 해보니 글작성시 일단 게시글 등록은 되는데 필터링 게시판으로 이동을 안합니다 문의드린것은 필터링단어가 있어도 다 등록은 되고 필터링 게시판으로 이동되게 하는것을 문의드렸는데....혹시 방법을 아시나요???

그누보드 최신소스 (5.3.1.3)  에서 다음과 같이 처리 및 필터링 단어 등록 테스트를 하여서
tmp ID 게시판의 뷰화면으로 이동되는 것을 제 환경에서는 확인하였습니다.

1) write.skin.php


    function fwrite_submit(f)
    {
        <?php echo $editor_js; // 에디터 사용시 자바스크립트에서 내용을 폼필드로 넣어주며 내용이 입력되었는지 검사함   ?>

        var subject = "";
        var content = "";
        $.ajax({
            url: g5_bbs_url+"/ajax.filter.php",
            type: "POST",
            data: {
                "subject": f.wr_subject.value,
                "content": f.wr_content.value
            },
            dataType: "json",
            async: false,
            cache: false,
            success: function(data, textStatus) {
                subject = data.subject;
                content = data.content;
            }
        });

        <?php if ($w == "") { ?>            
        if (subject || content) {
            f.bo_table.value = "tmp"; // 게시판 ID
        }
        <?php } ?>

        if (document.getElementById("char_count")) {
            if (char_min > 0 || char_max > 0) {
                var cnt = parseInt(check_byte("wr_content", "char_count"));
                if (char_min > 0 && char_min > cnt) {
                    alert("내용은 "+char_min+"글자 이상 쓰셔야 합니다.");
                    return false;
                }
                else if (char_max > 0 && char_max < cnt) {
                    alert("내용은 "+char_max+"글자 이하로 쓰셔야 합니다.");
                    return false;
                }
            }
        }

        <?php echo $captcha_js; // 캡챠 사용시 자바스크립트에서 입력된 캡챠를 검사함  ?>

        document.getElementById("btn_submit").disabled = "disabled";

        return true;
    }


2) /bbs/write_update.php

// 토큰체크
if ($bo_table != "tmp")
	check_write_token($bo_table);

답변을 작성하시기 전에 로그인 해주세요.
전체 22
© SIRSOFT
현재 페이지 제일 처음으로