묻고답하기
스팸 금지 keyword 호출방법.
2015.09.15 15:55
통합검색에서 스팸키워드로 등록된 게시물의 경우 차단하려고 하는데요..
// Set a variable for search keyword
$is_keyword = Context::get('is_keyword');
$bannedWords = array("xxx","sss","바보");
if(in_array($is_keyword,$bannedWords)) return new Object(-1,'금지어입니다');
기존에 이런식으로 수동적으로 ban 키워드를 작성해야했는데.
spam modules keyword 를 호출하여 차단하면 좋을 것 같은데..
$oFilterModel = getModel('spamfilter');
$output = array($oFilterModel->isDeniedWord($is_keyword));
if(in_array($is_keyword,$output)) return new Object(-1,'금지어 또는 보호를 받고 있는 키워드입니다.');
이런식으로 작성해줬지만 되질 않네요..
댓글 7
-
퍼니엑스이
2015.09.15 16:53
-
꾸링
2015.09.15 16:57
아 감사합니다 배열로 할필요가 없었네요
-
꾸링
2015.09.15 16:59
테스트를 해봤는데 알려주신대로 작성시 모든 키워드가 return 되어버립니다.;
$is_keyword = Context::get('is_keyword');
부분에 context 로되어있기 때문에 알려주신 방법으로는 되질 않고
배열을 사용해서 값을 매치해야될 것으로 보이는데 아닌가요..?
-
퍼니엑스이
2015.09.15 17:07
/**
* Search Result
*
* @return Object
*/
function IS()
{
$oFile = getClass('file');
$oModuleModel = getModel('module');
$logged_info = Context::get('logged_info');// Check permissions
if(!$this->grant->access) return new Object(-1,'msg_not_permitted');
$is_keyword = Context::get('is_keyword');
$oFilterModel = getModel('spamfilter');if($oFilterModel->isDeniedWord($is_keyword))
{
return new Object(-1, '금지어 또는 보호를 받고 있는 키워드입니다.');
}이런 식으로 작성해봤는데, 그래도 안되시는가요?
-
꾸링
2015.09.15 17:11
isx 모듈을 사용해서
function ISX()
{
$oFile = &getClass('file');
$oModuleModel = &getModel('module');// 권한 체크
if(!$this->grant->access) return new Object(-1,'msg_not_permitted');부분 뒤에 말씀해주신 대로 추가했지만, 모든 키워드가 return 되는 문제가 있습니다.
if($oFilterModel->isDeniedWord($is_keyword))
값에 모든 키워드가 걸리는 것으로보아 oFilterModel 이 걸러내는 방법을 잘못쓴게 아닐까 싶네요..
보통 $text = $obj->title . ' ' . $obj->content;
$output = $oFilterModel->isDeniedWord($text);이렇게 사용되어져있는데
저는 변수저장할 때 context로 is_keyword를 저장한게 자꾸 걸리네요..
-
퍼니엑스이
2015.09.15 17:17
$oFilterModel = getModel('spamfilter');
$isDeniedWord = !$oFilterModel->isDeniedWord($is_keyword)->toBool();
if($isDeniedWord)
{
return new Object(-1, '금지어 또는 보호를 받고 있는 키워드입니다.');
}이렇게 해보세요.
-
꾸링
2015.09.15 17:20
아 잘되네요 감사합니다.
혹시 toBool 가 무슨뜻인지 알려주실 수 있나요..?
$oFilterModel = getModel('spamfilter');
if($oFilterModel->isDeniedWord($is_keyword))
{
return new Object(-1, '금지어 또는 보호를 받고 있는 키워드입니다.');
}
이런식으로 작성하시면 됩니다.