컴퓨터 / Computer

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

공유지기 0 3,894 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

4컬러 민소매 블라우스 슬리브리스 여성나시 보들
쁘띠크로와 데일리패션향수_퍼스트러브(라일락향)
깔끔하게 가방속정리 백인백 정리파우치 유용한 이너백 속가방
4컬러 오리지널 롱 남성장화 방수장화 남성용 레인부츠 장마철 패션장화
갤럭시 A8 2018 사생활 액정보호필름1매
크리스탈프로링크캡슐케이스 갤럭시Z플립5 SM-F731N
갤럭시퀀텀3 멜로우 카드 젤리케이스 M536
갤럭시온7 2016 SPR 9H 강화유리 글라스 1매 G610
이케아 GLASIG글라시그 미니양초홀더 유리5x5cm 5개입
이케아 YLLEVAD 윌레바드 미니액자 화이트13x18cm
LED 전구 T 벌브 램프 40W 전구색 E26 비츠온
NEW 페인트 부자재세트 DIY 페인트도구 셀프페인팅 페인트용품
서울우유 멸균우유 1L x 10팩입
키친플라워 인덕션 냄비 멀티팟 국수 라면 냄비 18CM
고휘도 안전 반사 스티커 야간 킥보드 자전거 헬멧
피싱 이동식 로드백 거치대 태클박스 가방

부자되는집 내추럴 소프트 물티슈 캡형 100매_완구 미
칠성상회
네모랑고(NEMORANGGO) 냉온풍 튜브_2미터
칠성상회

맨위로↑