묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
필터링에 관해 질문합니다.
2003.10.18 16:36
base_filter.txt라는 문서에는 기본적인 욕필터링단어가 들어있고, ","로 구분이 되어있습니다.
게시판의 글쓰는 폼의 이름이 $memo이고요 ,
제목과 글에서 이 필터링을 하려하는데
필터링에는 문제가 없는데, 파일을 불러와서 배열로 만드는 것에 문제가 있는거 같습니다.
exlode함수나, split함수가 문자열을 분리해서 배열로 만든다고 알고 있습니다.
이거 두개를 다 써보았는데 제대로 되지 않는군요,
혹시 소스에 잘못된 부분이 있나 도움을 요청합니다.
$date = file("base_filter.txt");
$fil = explode(",",$date);
//필터링함수
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; }
for($e=0;$e<count($fil);$e++)
{
if(strchr($memo,$fil[$e]))
{
// 필터링에 걸렸을때 잘못된 체크는 아닌지 체크함
$check_pos=strpos($memo,$fil[$e]);
if($check_pos<5) $check_pos=5;
$check_filter2=substr($memo,$check_pos-5,strlen($fil[$e])+5);
if(eregi(asc_hex($fil[$e]),asc_hex($memo))) error('금지단어 '.$fil[$e].'가 포함되어있습니다.');
}
}
for($e=0;$e<count($fil);$e++)
{
if(strchr($title,$fil[$e]))
{
// 필터링에 걸렸을때 잘못된 체크는 아닌지 체크함
$check_pos=strpos($title,$fil[$e]);
if($check_pos<5) $check_pos=5;
$check_filter2=substr($title,$check_pos-5,strlen($fil[$e])+5);
if(eregi(asc_hex($fil[$e]),asc_hex($title))) error('금지단어 '.$fil[$e].'가 포함되어있습니다.');
}
}
asc_hex($memo);
asc_hex($title);
게시판의 글쓰는 폼의 이름이 $memo이고요 ,
제목과 글에서 이 필터링을 하려하는데
필터링에는 문제가 없는데, 파일을 불러와서 배열로 만드는 것에 문제가 있는거 같습니다.
exlode함수나, split함수가 문자열을 분리해서 배열로 만든다고 알고 있습니다.
이거 두개를 다 써보았는데 제대로 되지 않는군요,
혹시 소스에 잘못된 부분이 있나 도움을 요청합니다.
$date = file("base_filter.txt");
$fil = explode(",",$date);
//필터링함수
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; }
for($e=0;$e<count($fil);$e++)
{
if(strchr($memo,$fil[$e]))
{
// 필터링에 걸렸을때 잘못된 체크는 아닌지 체크함
$check_pos=strpos($memo,$fil[$e]);
if($check_pos<5) $check_pos=5;
$check_filter2=substr($memo,$check_pos-5,strlen($fil[$e])+5);
if(eregi(asc_hex($fil[$e]),asc_hex($memo))) error('금지단어 '.$fil[$e].'가 포함되어있습니다.');
}
}
for($e=0;$e<count($fil);$e++)
{
if(strchr($title,$fil[$e]))
{
// 필터링에 걸렸을때 잘못된 체크는 아닌지 체크함
$check_pos=strpos($title,$fil[$e]);
if($check_pos<5) $check_pos=5;
$check_filter2=substr($title,$check_pos-5,strlen($fil[$e])+5);
if(eregi(asc_hex($fil[$e]),asc_hex($title))) error('금지단어 '.$fil[$e].'가 포함되어있습니다.');
}
}
asc_hex($memo);
asc_hex($title);
global $fil