HanIRC의 Arcy님이 수정하신 내용에 아스키->HEX로 변환하여 필터링하는 과정을 추가하였습니다. 1글자짜리 (zot, ssip..)도 잘 필터링 되고 “려운”을 zot으로 인식하는등의 문제도 없습니다. 급조되었기때문에 버그가 있을수도 있으나, 더 잘 고친다는 것은 고치다가 망칠 확률과 비슷하므로 그대로 씁니다. -_-;;
b2config.php 를 열어서 차단할 단어의 목록을 추가합니다.
b2comments.post.php를 열어서 우선 아스키->HEX함수를 낑가넣습니다. 전 dbconnect();바로 아래 넣었습니다만…
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;
}
그리고,
echo “Error: please type a comment”;
exit;
}
이 부분을 찾은후 이 아래에 다음의 내용을 추가합니다.
#코멘트 본문에 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로 고치기 난감해서 텍스트파일로 만들어 놨습니다.
B2 패치의 산실! @hof~~
Pingback: Gratia's SadCafe
감사합니다.