문장 속에 스팸 단어있으면 종료되게 하는 소스 도움 부탁드려요. 채택완료
$msg = trim($_POST['msg']);
위와 같이 $msg 변수에 메세지 내용을 받아온 경우
예를 들어서
메세지 내용 중 qwer123 이라는 글자가 있을 경우
"스팸입니다" 라는 문구를 출력하고 더 이상 코드 실행을 하지않고
종료되게 하려면 어떻게 코딩해야할까요?
왕초보라서 활용을 못하겠네요 ㅎ
대충 아래와 같은 방식으로 할려고하는데요.
아래 if 문에서 $msg 변수 다음에 어떻게 대입식을 넣어야할지를 모르겠네요
$msg = trim($_POST['msg']);
if ($msg *****) {
$result_json[JSON_MESSAGE_NAME] = "스팸입니다.";
toJson($result_json);
exit();
}
도움 좀 부탁드립니다.
답변 2개
</p>
<p>$spam_word = 'qwer123';</p>
<p>$msg = trim($_POST['msg']);</p>
<p>$pos = stripos($msg,$spam_word);</p>
<p>if ($pos !== false) {
$result_json[JSON_MESSAGE_NAME] = "스팸입니다.";
toJson($result_json);
exit();
}</p>
<p>
stripos($aaa,$b) $aaa 문자열에서 $b 단어를 찾음
존재하면 시작하는 위치를 숫자로(int) 반환
없으면 false (boolean 형) 으로 반환
그리고 false 비교시 데이터 형까지 비교하는 === 나 !=== 를 이용 할 것
단순히 == 나 != 로 비교하면 0 이 반환된다면 false 로 인식하여
의도와 다르게 동작 할 수 있음
stripos 함수는 대소문자 구분하지 않음 구분하려면 strpos 사용
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
bbs\ajax.filter.php 파일에 소스 참조하세요.
게시판에 스팸 차단하는 소스 입니다.
</p>
<p>//$filter = explode(",", strtolower(trim($config['cf_filter'])));</p>
<p>// strtolower 에 의한 한글 변형으로 아래 코드로 대체 (곱슬최씨님이 알려 주셨습니다.)</p>
<p>$filter = explode(",", trim($config['cf_filter']));</p>
<p>for ($i=0; $i<count($filter); $i++) {</p>
<p> $str = $filter[$i];</p>
<p> </p>
<p> // 제목 필터링 (찾으면 중지)</p>
<p> $subj = "";</p>
<p> $pos = stripos($subject, $str);</p>
<p> if ($pos !== false) {</p>
<p> $subj = $str;</p>
<p> break;</p>
<p> }</p>
<p> </p>
<p> // 내용 필터링 (찾으면 중지)</p>
<p> $cont = "";</p>
<p> $pos = stripos($content, $str);</p>
<p> if ($pos !== false) {</p>
<p> $cont = $str;</p>
<p> break;</p>
<p> }</p>
<p>}</p>
<p>
답변에 대한 댓글 1개
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 문서에 직접 넣어서 대입하는 초간단 방식을 사용하려고합니다.
도움 주시면 감사할께요^^
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
정말 간결하고 이해하기 쉽게 알려주셔서 큰 도움되었습니다.
제가 운영하는 앱과 연동하는 서버 파일에 한번 적용시켜서 사용해보아야겠네요.
다시 한번 감사합니다. ^^