Warning: Undefined array key "mobile_dir" in /home/kagla/new-sir/old/common.php on line 315
문장 속에 스팸 단어있으면 종료되게 하는 소스 도움 부탁드려요.

문장 속에 스팸 단어있으면 종료되게 하는 소스 도움 부탁드려요.

문장 속에 스팸 단어있으면 종료되게 하는 소스 도움 부탁드려요.

QA

문장 속에 스팸 단어있으면 종료되게 하는 소스 도움 부탁드려요.

답변 2

본문

$msg   = trim($_POST['msg']);

위와 같이 $msg 변수에 메세지 내용을 받아온 경우

예를 들어서

메세지 내용 중 qwer123 이라는 글자가 있을 경우

"스팸입니다" 라는 문구를 출력하고 더 이상 코드 실행을 하지않고

종료되게 하려면 어떻게 코딩해야할까요?

 

왕초보라서 활용을 못하겠네요 ㅎ

 

대충 아래와 같은 방식으로 할려고하는데요.

아래 if 문에서 $msg 변수 다음에 어떻게 대입식을 넣어야할지를 모르겠네요

$msg   = trim($_POST['msg']);

if ($msg *****) {
  $result_json[JSON_MESSAGE_NAME] = "스팸입니다.";
  toJson($result_json);
  exit();
 }

 

도움 좀 부탁드립니다.

이 질문에 댓글 쓰기 :

답변 2


$spam_word = 'qwer123';
$msg   = trim($_POST['msg']);
$pos = stripos($msg,$spam_word);
if ($pos !== false) {
  $result_json[JSON_MESSAGE_NAME] = "스팸입니다.";
  toJson($result_json);
  exit();
 }

stripos($aaa,$b)  $aaa 문자열에서 $b 단어를 찾음

존재하면 시작하는 위치를 숫자로(int) 반환

없으면 false (boolean 형) 으로 반환

그리고 false 비교시 데이터 형까지 비교하는 === 나 !=== 를 이용 할 것

단순히 == 나 != 로 비교하면 0 이 반환된다면 false 로 인식하여 

의도와 다르게 동작 할 수 있음

stripos 함수는 대소문자 구분하지 않음 구분하려면 strpos 사용

대단히 감사합니다.
정말 간결하고 이해하기 쉽게 알려주셔서 큰 도움되었습니다.
제가 운영하는 앱과 연동하는 서버 파일에 한번 적용시켜서 사용해보아야겠네요.
다시 한번 감사합니다. ^^

bbs\ajax.filter.php 파일에 소스 참조하세요.

게시판에 스팸 차단하는 소스 입니다.


//$filter = explode(",", strtolower(trim($config['cf_filter'])));
// strtolower 에 의한 한글 변형으로 아래 코드로 대체 (곱슬최씨님이 알려 주셨습니다.)
$filter = explode(",", trim($config['cf_filter']));
for ($i=0; $i<count($filter); $i++) {
    $str = $filter[$i];
 
    // 제목 필터링 (찾으면 중지)
    $subj = "";
    $pos = stripos($subject, $str);
    if ($pos !== false) {
        $subj = $str;
        break;
    }
 
    // 내용 필터링 (찾으면 중지)
    $cont = "";
    $pos = stripos($content, $str);
    if ($pos !== false) {
        $cont = $str;
        break;
    }
}

답변 감사합니다만. 제가 응용하려는 것과는 매칭이 안될듯 하군요.
1,
앞부분 소스 내용이 없으므로 $config['cf_filter'] 이 배열 변수값이 어떻게 얻어지는지는
모르겠으나. DB에 저장된 필터링용 단어 문장을 불러와 저장하는 변수겠죠?

2,
for ($i=0; $i<count($filter); $i++)  이 것은 필터링용 단어 모음 문장 길이만큼
$i 값을 증가 시키는 순환 문이죠?
참고로 제가 PHP 문외한 이라서 소스를 구하고자 질문 드렸던 거고요.
다음과 같은 코드를 이해하지 못합니다.
$str = $filter[$i]; 이런 코드의 경우
$str 변수에 $filter 배열 변수의 $i 번째 배열의 데이터를 저장하라는 것 정도로만
인지할 뿐. $str 변수에 어떤 데이터가 저장되게되는지 조차 모르는 1인입니다.

3,
$pos = stripos($subject, $str); 이 코드 자체를 이해 못하므로
$pos 값이 참이면 실행 중지하라는 것 자체를 이해 못하겠네요.

PHP를 90% 이상 모르는 사람이니 쬐끔한 이해해주시고 도움 주시면 감사하겠네요.
예를 들어
$aaa 라는 변수에 "이;ㅁㄴ러니;얾니;러ㅣ;ㄴ멀니 qwer123 sdjfldas" 라는
문장이 저장되있을 경우 이 문장에서 qwer123 이라는 글자가 있는지 없는지
확인하여 있다면
break; 또는 exit(); 명령으로 실행 중지를 시키는 아주 단순한 소스코드를 원합니다.
그리고
qwer123 과 같은 필터링 단어 역시 DB에서 불러오는 방식이 아니라.
PHP 문서에 직접 넣어서 대입하는 초간단 방식을 사용하려고합니다.

도움 주시면 감사할께요^^

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,406
© SIRSOFT
현재 페이지 제일 처음으로