컴퓨터 / Computer

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

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

여자남방 긴팔 블라우스 루즈핏 투컬러 여성 데이트룩
남성 편한 데일리 운동 런닝 캐주얼 운동화 ZG-M52
4컬러 무광 발목 장화 여성용 레인부츠 패션장화 장마철 방수
키높이신발 폭신한 샌들 남자샌들 남성샌들 4cm
샌디스크 USB메모리 z50 128GB 레이저각인
갤럭시탭 액티브2 종이질감 액정보호필름
갤럭시 S26 울트라 지문방지 액정보호필름 2매
SUB 아이폰 SE 지문방지 저반사 보호필름 2매
바퀴형 이동식 사이드 테이블 다용도 이동식 보조 테이블 협탁 틈새
올크롬 샤워기 중 메탈호스세트 1.5m/샤워꼭지 레인 샤워줄 목욕탕 욕실 샤워헤드 교체 부속품 호수 화장실
6구 아크릴 립스틱 정리함
붙이는 몰딩 벽지보수 셀프인테리어 걸레받이 시트지 4컬러 1m
업소용 무광 샤틴 뷔페포크 대형
자전거 고글 무테 블루라이트 차단 햇빛차단 마라톤 선글라스
앵무새 횃대
강아지 세모 시그니처 미니 칫솔 1P 양치 치석관리 작은입 애견

3m 팝업팩 디스펜서 포스트잇 kr2003 51x76mm
바이플러스
LF 쏘나타 하이브리드 와이퍼 세트 650mm450mm
칠성상회

맨위로↑