2026, 새로운 도약을 시작합니다.

금지단어 필터링 제발 도와주세요오 ㅠㅠ 채택완료

일단 저는 https://sir.kr/g5_skin/25290?sfl=wr_subject%7C%7Cwr_content&stx=%EC%83%81%EB%8B%B4#c_29795

해당 스킨을 사용중입니다.

메인페이지에서 상담폼을 입력하면 다른 게시판으로 그 내용이 가게되죠.

이 입력폼은 그냥 일반 php파일을 인클루드하여 메인페이지에 불러온것이구요 write.skin.php파일에서 글을 쓰지않습니다.

스킨안에는 write_update.head.skin.php 와 write_update.skin.php 파일이 두개가있습니다.

이곳에 금지단어 필터링을 넣으려고 시도했습니다.

Copy

위의 것은 write_update.head.skin.php 의 코드입니다. 솔직히 저게 지금 제기능을 하는지도 모르겠습니다. 왜있는지 모르겠습니다. 캡챠는 사용도안합니다.

Copy

위의 코드는 write_update.skin.php 의 소스입니다.

저기다가 저렇게 넣어줬는데요..

전혀 작동하지않다더군요..

sir에 검색해보니 write_update.head.skin.php에 넣으라는데 거기에 넣어도 똑같이 안되구요..

어떻게 해야할지요 ㅠㅠ

Copy




var char_min = parseInt(); 

var char_max = parseInt(); 



위의 코드는 상담문의폼 php파일입니다. 이 파일은 루트폴더에 있구용.

index.php파일에 <? include_once("./customer1.php"); ?> 이렇게 불러와서 사용하고있습니다..

제발 도와주세요 어떻게해야할지.. 진짜 상담문의들어올때마다 문자가 관리자에게 가고있는데 거의 뭐 폭탄처럼 몇분마다 한번씩 오니까.. 진짜 폭탄이라는말이 걸맞을정도로 많이와요 ㅠㅠ 금지단어 필터링으로 해서 아예 그 스팸특유의 단어들 막아놓으면 될거같아서요... 그전에 워드프레스에서도 그렇게 해서 스팸DB를 많이 줄였던 경험이있습니다.

도와주세요!!!!!!!!!!!!

이해가 안되신다면 성심성의껏 설명해드리겠습니다 제발제발 도와주세요 ㅠㅠ

답변 2개

저렇게 할 필요가 없는 작업입니다

basic스킨 write.skin.php

하단 자바스크립트에 보면 관리자 페이지에서 등록한 단어들을 필터링하는 코드가 들어있습니다

쓰기 스킨  function fwrite_submit(f) 부분을 비교하여 수정해서 해보세요 

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

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

www/bbs/write_update.php 를 보시면 아시겠지만

write_update.head.skin.php 이후

DB작업이 진행되고(수정, 삽입, 가변파일처리등)

이후 write_update.skin.php과 write_update.tail.skin.php가 진행됩니다.

현재 내용만으로는 단순히필터링 기능만 작동하지 않는지(글도 icode도 정상작동)

write_update.head.skin.php 자체가 읽히지 않는다는것인지(데이터 부족으로 인한 path수집 실패) 알수 없는데

www/bbs/write_update.php에서 디버깅을 어느정도 진행해 보시는게 좋을것으로 보입니다.

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

답변에 대한 댓글 4개

디버깅은 어떻게하나요..?ㅠ 제가 너무 몰라서요..
/bbs/write_update.php에 보니까
[code]
// 사용자 코드 실행
@include_once($board_skin_path.'/write_update.skin.php');
@include_once($board_skin_path.'/write_update.tail.skin.php');
[/code]

이렇게 두개밖에없길래 @include_once($board_skin_path.'/write_update.head.skin.php'); 를 추가해줬습니다..
그리고 write_update.head.skin.php 에서
//$keystring = uniqid();
//set_session("ss_captcha_count", 0);
//set_session("ss_captcha_key", $keystring);
//$captcha_key = $_POST['captcha_key'] = get_session('ss_captcha_key');

를 주석처리하고 금지단어 필터링 코드를 넣었는데..
그래도 안되네요 ㅠㅠ
그누보드 원본상태(버전 5.3.2.9)기준 write_update.php파일 128번 줄에 @include_once($board_skin_path.'/write_update.head.skin.php');가 있어야 정상입니다.

write_update.head.skin.php의 위치에 따라 작동하지 않을 수 있습니다.

$board_skin_path의 값이 들어가있는지 확인이 필요하고 들어가있다면 그 값이 정상인지도 확인해봐야합니다.
정상적으로 write_update.head.skin.php파일을 include한다면 word_filter_check를 불러오는지 확인 후 word_filter_check가 정상작동 하는지 확인 해 봐야겠죠.
아아 보니까 @include_once($board_skin_path.'/write_update.head.skin.php'); 은 있었네요 ㅎ
그런데 word_filter_check를 불러오는지는 어디서 확인하죠?
write_update.head.skin.php 파일에도 없구 /bbs/write_update.php 에도 그런건 없네요 ㅠㅠ
word_filter_check는 본인이 추가한게 아닌가요?

write_update.skin.php에 추가되어있는 word_filter_check 함수를 write_update.head.skin.php에 옮긴뒤에 word_filter_check 함수 선언 이후 사용하시면 되지 않을까요?

아까도 말씀드렸지만

write_update.php의 처리프로세스는

1. 예외처리 또는 공격방어
2. write_update.head.skin.php을 include
3. DB처리(글입력, 글수정, 가변파일처리)
4. 메일링 처리
5. write_update.skin.php
6. write_update.tail.skin.php
7. 종료(파일 업로드 메세지출력 또는 URL이동)
입니다.
DB처리가 시작되기 전인 write_update.head.skin.php에서 필터를 확인 및 작업을 지속할지 튕겨낼지를 정하시면 됩니다.

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

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

로그인
🐛 버그신고