코멘트에서 스팸광고/욕설 필터링

By | 2004-03-17

HanIRC의 Arcy님이 수정하신 내용에 아스키->HEX로 변환하여 필터링하는 과정을 추가하였습니다. 1글자짜리 (zot, ssip..)도 잘 필터링 되고 “려운”을 zot으로 인식하는등의 문제도 없습니다. 급조되었기때문에 버그가 있을수도 있으나, 더 잘 고친다는 것은 고치다가 망칠 확률과 비슷하므로 그대로 씁니다. -_-;;

b2config.php 를 열어서 차단할 단어의 목록을 추가합니다.

$badwords = array(“성인”,”포르노”,”미시”); // 같은 방식으로 쭈욱 추가합니다. 대놓고 쓰기 민망한 단어가 많아서-_-

b2comments.post.php를 열어서 우선 아스키->HEX함수를 낑가넣습니다. 전 dbconnect();바로 아래 넣었습니다만…

#아스키->HEX

function asc_hex($char) {
$j = 0;
$word_length=strlen($char);

for($i = 0;$i< $word_length;$i++) {
if($j == 0) {
if(ord(substr($char,$i,1)) > 0xa1 && ord(substr($char,$i,1)) < = 0xfe) {
$j = 1;
$t_char = $t_char.bin2hex(substr($char,$i,1));
}
else {
$t_char = $t_char.”00″.bin2hex(substr($char,$i,1)).” “;
}
}
else {
$t_char = $t_char.bin2hex(substr($char,$i,1)).” “;
$j = 0;
}
}
return $t_char;
}

그리고,

“comment” || $comment == “”) {
echo “Error: please type a comment”;
exit;
}
이 부분을 찾은후 이 아래에 다음의 내용을 추가합니다.

foreach( $badwords as $bad ) {
#코멘트 본문에 URL 입력할때 대소문자 안가리고 필터링하기 위해 strtolower 추가.
$comment_lower=strtolower($comment);
if(strstr(asc_hex($comment_lower), asc_hex($bad))) {
echo “<script> alert(‘[“.$bad.”] 은 사용하실 수 없는 문구입니다.’); history.go(-1); </script>”;
exit;
}
}

잘 안되면…. -_-되게 고친담에 저한테도 알려주세요-_-;;
늘 그렇듯이 백업필수! 모든 책임은 자기 자신에게!!

참고 : tab을 html로 고치기 난감해서 텍스트파일로 만들어 놨습니다.

3 thoughts on “코멘트에서 스팸광고/욕설 필터링

  1. Pingback: Gratia's SadCafe

Comments are closed.