컴퓨터 / Computer

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

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

티뷰크 SS 정비복 TB-730
여자 여름 박스핏 오버핏 프린팅 티셔츠 롱티 반팔티
빅사이즈 쉬폰 헤어슈슈 얼굴작아보이는 여름 곱창끈
토끼 레터링 프린팅 반팔 박스티셔츠 라운드넥 홈웨어
커널형 이어폰 블랙 무통증 유선이어폰
오쿠 두유 제조기 죽 이유식 제조기 두유기 600ml
뉴신형 NX6000W 차량용 테블릿 CD슬롯 휴대폰 거치대
삼성 노트북9 메탈 13 노트북 외부보호필름세트
칸막이 파티션 설치 고정 브라켓 받침대 L자 DD-11939
이케아 GUBBARP 구바르프 손잡이 21mm 화이트 2개입
이케아 GLASIG글라시그 미니양초홀더 유리5x5cm 5개입
접이식선반 5단 원터치 폴딩 철제수납장 다용도선반 베란다 서재 거실 욕실 주방수납
국산일체형트랩 세면대 배수관 부속품 폽업 트랩
코카콜라 제로 업소용 1.25L 12PET
아리랑 옛날십리사탕 570g X 10개입 1박스
샘표 진간장 덕용 14L 대용량 1개

가정용 코팅기 KOLAMI-324 4롤러 A3 무소음 무기포
칠성상회
물고기 애벌레 원목 낚시놀이 장난감
칠성상회

맨위로↑