컴퓨터 / Computer

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

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

GDS-S13 잉글랜드 욕실슬리퍼 - 욕실화 다용도신발
남자 밴딩 팬츠 츄리닝 남성 밴딩 바지 배기팬츠 린넨
여름 여성 반팔 프릴 블라우스 데이트 외출 오피스룩 여성복
포니 올림머리 만두핀 똥머리집게핀 블랙
갤럭시탭 액티브5 고투명 액정보호필름 2매
갤럭시노트20 케이스 인포켓 지갑 다이어리 N981
PN 압력솥 김빼기 안전밸브 블랙펄 - 대
캐논 iP2680 정품잉크 검정.%
스프레이 생활 다용도 코팅 다목적 방수 용품 섬유 발수제
안젤로 냉장고 자석 틈새 선반 소스 부착형 주방 철제
360도 회전형 사이드테이블 이동식 승강 높이조절 쇼파 침대옆 책상테이블
이케아 TRIXIG 트릭시그 페인트붓 브러시 3종세트
무타공 싱크대 선반 키친타올 행주 거치대 걸이 꽂이 주방용품 행거
유니보르 남자 반바지 러닝 쇼츠 헬스복 남성 트레이닝 추리닝 헬스 반바지 헬스장 운동복 짐웨어 농구
옥시크린 오투액션 분말 리필700g 세탁세제
방수앞치마 어린이집앞치마 작업용앞치마

사각사각얼슬치젤몬 (2개세트)
칠성상회
(UNI) 쿠루토가 어드밴스 샤프 0.5mm M5-559 1자루 KURUTOGA
칠성상회

맨위로↑