컴퓨터 / Computer

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

공유지기 0 4,572 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
데일리 남성 크로스 포인트 중지갑
하이텐더다이어리 갤럭시버디2 SM-M236L
갤럭시Z플립5 5G 슬림 범퍼케이스 F731
(2매) 갤럭시A8 스타(G885) 블루라이트차단 필름
갤럭시탭s3 9.7 종이질감 액정 보호필름 1매
(대원)고급씽크선반600 1124
이케아 TROMMA 트롬마 인테리어 벽시계
칸막이 강력 고정 투명 아크릴 선반 받침 홀더
이케아 PALYCKE 폴뤼케 걸이식 후크선반
소프트 단모 샤기 거실 러그 170x230cm (1.5평)
샤워기헤드(화이트/보급형) BD-WCP / 수전
센서티브 삼각모 칫솔 특수 미세모 치솔 틈새 세정 X3
원료 포장 마대 자루 PP 페기물 포대 54-87 100매

OPP 투명접착 8X20+4cm 200장
칠성상회
(Box) OPP봉투 접착 8X20+4 3100장
칠성상회

맨위로↑