컴퓨터 / Computer

그누보드에서 인기검색어 특정 글자 수 이상으로 보여주기

공유지기 0 5,720 2018.10.26 23:59


mod_security를 적용한 시스템에서는 SQL_injection 공격을 막기 위해서 특수 문자를 배제시키는데, 이 와중에 입력한 키워드가 아래와 같이 나온다.


 a

 A

 8

 1

 http

 .

 .

 .


정상적인 단어 검색이면 좋겠지만 저런 식으로 철자만 나오면 인기검색어를 보여줄때 문제가 많이 생긴다. 그래서 두 가지 방법을 생각해 보았다.


 1) 입력할때 특정 길이 이하는 버리기

 2) 보여줄때 특정 길이 이상만 보여주기


그런데 1) 방법은 mod_security에서 끊어버리기 때문에 작업을 하기가 애매했다. 그래서 2)를 선택했다. 


 파일 : popular.lib.php

 위치 : /lib


위 파일을 연다. 약 15라인 쯤에 아래 sql 문이 있다.


 $sql = " select pp_word, count(*) as cnt from {$g5['popular_table']} where pp_date between '$date_gap' and '".G5_TIME_YMD."'  group by pp_word order by cnt desc, pp_word limit 0, $pop_cnt ";


위를 아래와 같이 바꾼다. 


 $sql = " select pp_word, count(*) as cnt from {$g5['popular_table']} where pp_date between '$date_gap' and '".G5_TIME_YMD."'  AND CHAR_LENGTH(pp_word) > 1 group by pp_word order by cnt desc, pp_word limit 0, $pop_cnt ";


즉 "AND CHAR_LENGTH(pp_word) > 1" 이 조건을 하나 더 넣어서 최소 2 글자 이상 있는 검색어만 노출시키도록 했다. 사이트 특징에 따라서 2나 3을 쓸 수도 있다.

Comments

남성 하와이안 바캉스룩 반팔 셔츠 1P 썸머룩 휴가 비치
지포 라이터 부싯돌 심지 호환
미니 메이크업 브러쉬 8종세트 LM-0454
쿨링 아이스 소재 여름 반바지
스파이더 핸드폰 거치대
BS 3M 발 받침대 FR530 각도조절 거치대
액센 블루투스키보드 플레이고 무선 저소음 휴대용 파스텔 블루투스 슬림 키보드 (핑크) 무선키보드
갤럭시노트9 지문방지 액정보호필름 평면형 2매입
3M 코맨드 화이트 리필테이프 대 4개입
테니스공 의자 발커버 4P 식탁의자발커버 소음방지공 의자발커버
수납함 신발 정리대 투명 블랙 케이스 보관함 10개입
신개념 에어로졸 분사기 스프레이건
키친아트 예리하고 섬세한 올스텐 감자칼 필러
이케아 MEDELVAG 메델보그 병솔 유리병 브러쉬
낫소 탁구 지주네트 세트
스케이터 도시락가방 토토로 메이 페이스 도시락 주머니

(UNI) 제트스트림 3색 0.38mm (옵션) SXE3-400-38 JETSTREAM 볼펜
칠성상회
호스 일반편사 하늘색 16MMx40M 투명 1롤
칠성상회

맨위로↑