그누5에 단어필터링은 있거든요 근데 제가 구현하고 싶은건 조금 다른데요
금지단어가 포함된 글을 등록했을시 금지단어게시판이란 이름의 게시판으로
작성글이 이동되게 만들고 싶습니다 이거 어떻게 해야하는지 감이 안옵니다..고수님들 도와주셔요
|
답변 1개 / 댓글 7개
채택된 답변
+20 포인트
2018-05-24 (목) 20:39:21
잠깐 생각을 해본 것인데, 잘 적용될지는 모르겠습니다.
write.skin.php 에 보면 다음의 코드가 있는데..
Copy
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;
}
위의 코드를 다음과 같이 변경하면 되지 않을까 합니다.
Copy
<?php if ($w == "") { ?>
if (subject || content) {
f.bo_table.value = "tmp"; // 게시판 ID
}
<?php } ?>
답변에 대한 댓글 7개
2018-05-31 (목) 16:07:32
write.skin.php 에서
윗 코드 부분을 삭제하고,
아랫코드 부분으로 대체하면 된다는 의미로 말씀드린 것입니다.
다만, 아랫코드 부분에서 "tmp" 는 예제 테이블 ID 이고, 실제 금지단어 게시판의 ID 로 맞춰주시면 됩니다.
윗 코드 부분을 삭제하고,
아랫코드 부분으로 대체하면 된다는 의미로 말씀드린 것입니다.
다만, 아랫코드 부분에서 "tmp" 는 예제 테이블 ID 이고, 실제 금지단어 게시판의 ID 로 맞춰주시면 됩니다.
2018-05-31 (목) 16:24:27
좀전에 '테스트를 해보았다'고 쓴 댓글은 삭제하였습니다.
(순간 회피하려고 거짓으로 댓글을 달았습니다.)
죄송합니다. 거짓으로 쓴 댓글에 대해 다시한번 사과드립니다.
당시 테스트를 해보지는 못했고, 당시 write.skin.php 소스만 잠깐 보고 답을 달았었습니다.
지금 테스트를 해보았고, 문제가 있다는 것을 확인하였습니다.
bo_table 임의 변경에 대해 체크를 하는 로직에서 걸리는 것 같습니다.
일단 그 부분에 대한 해결방법 중 하나는,
/bbs/write_update.php 의 상단에서
check_write_token($bo_table); 부분을,
if ($bo_table != "tmp") // 금지단어 게시판 ID
check_write_token($bo_table);
로 추가로 수정해 주어야 할 듯 합니다.
(순간 회피하려고 거짓으로 댓글을 달았습니다.)
죄송합니다. 거짓으로 쓴 댓글에 대해 다시한번 사과드립니다.
당시 테스트를 해보지는 못했고, 당시 write.skin.php 소스만 잠깐 보고 답을 달았었습니다.
지금 테스트를 해보았고, 문제가 있다는 것을 확인하였습니다.
bo_table 임의 변경에 대해 체크를 하는 로직에서 걸리는 것 같습니다.
일단 그 부분에 대한 해결방법 중 하나는,
/bbs/write_update.php 의 상단에서
check_write_token($bo_table); 부분을,
if ($bo_table != "tmp") // 금지단어 게시판 ID
check_write_token($bo_table);
로 추가로 수정해 주어야 할 듯 합니다.
2018-05-31 (목) 17:03:45
기본환경설정에서 admin이란 필터링단어를 넣고 말씀해주신대로 테스트를 해보니 글작성시 일단 게시글 등록은 되는데 필터링 게시판으로 이동을 안합니다 문의드린것은 필터링단어가 있어도 다 등록은 되고 필터링 게시판으로 이동되게 하는것을 문의드렸는데....혹시 방법을 아시나요???
2018-05-31 (목) 17:37:52
그누보드 최신소스 (5.3.1.3) 에서 다음과 같이 처리 및 필터링 단어 등록 테스트를 하여서
tmp ID 게시판의 뷰화면으로 이동되는 것을 제 환경에서는 확인하였습니다.
1) write.skin.php
[code]
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;
}
[/code]
2) /bbs/write_update.php
[code]
// 토큰체크
if ($bo_table != "tmp")
check_write_token($bo_table);
[/code]
tmp ID 게시판의 뷰화면으로 이동되는 것을 제 환경에서는 확인하였습니다.
1) write.skin.php
[code]
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;
}
[/code]
2) /bbs/write_update.php
[code]
// 토큰체크
if ($bo_table != "tmp")
check_write_token($bo_table);
[/code]
답변을 작성하려면 로그인이 필요합니다.