컴퓨터 / Computer

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

공유지기 0 5,576 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

여성 460g 경량 우븐 운동화 3color
남성 데일리 기본 무지 소프트 기모 안감 하프넥 목티 폴라티
집게형 미니핀 앞머리 옆머리 작은 머리핀 앞머리핀
운동화 셀프 수선 패치 10P
갤럭시S26울트라 럭키 스티커 맥세이프 패브릭 케이스
갤럭시 와이드5 지갑 다이어리케이스 핸드폰 스탠딩 카드포켓 E426S
TBZ Coms 카드리더기 2 in 1 C타입 USB 3.0 TF Micro SD SD FW001
삼성정품 SL-M4070FX용 흑백레이저프린터토너
대건통상틈새 지그재그 Z신발장 9단
안젤로 냉장고 자석 틈새 선반 소스 부착형 주방 철제
도어스토퍼/문 고정장치 말발굽 도어스톱 말굽 방문
4단 신발 정리함 수납 조립식 선반 현관 신발장
알유21 RU21 6정 비타민C
농심 백산수 2.0L x 6pet
휴대용 위생 코털제거 정리 콧털클리퍼 클립
칼리타 웨이브 필터 화이트 2~4인용 50매입 커피 여과지

PVC 안전 경고 테이프
칠성상회
종이나라 디자인 양면색상지 4절 09 흰분홍 (10개입)
칠성상회

맨위로↑