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

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

QA

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

본문

$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 문서에 직접 넣어서 대입하는 초간단 방식을 사용하려고합니다.

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

답변을 작성하시기 전에 로그인 해주세요.
전체 1

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT