문장 속에 스팸 단어있으면 종료되게 하는 소스 도움 부탁드려요.
본문
$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;
}
}
답변을 작성하시기 전에 로그인 해주세요.