인기검색어 순위에 있는 이상한 검색어 삭제하기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

인기검색어 순위에 있는 이상한 검색어 삭제하기 정보

인기검색어 순위에 있는 이상한 검색어 삭제하기

본문

홈페이지의 인기검색어 순위에 이상한 단어들이 뜨는데 프로그램으로 삭제하는 방법을 몰라 그냥 phpMyAdmin 에서 그누보드 DB 를 열고 g4_popular 테이블에서 이상한 검색어들을 Search를 이용하여 그동안 수동으로 지웠습니다.

이상한 검색어를 입력하는 아이피를 추적해 봤더니, 구글(Google) 등 인터넷 검색업체의 검색로봇이 사용하는 아이피처럼 보이던데, 혹 아이피를 차단하면 구글에서 검색할 때 뜨지않을까봐 걱정되어 아이피 차단도 못하고 그냥 phpMyAdmin를 사용하여 수동으로 작업을 했었습니다.

그리고 잘 알지도 못하는 php를 조금씩 공부하여 부족하지만 이상한 검색어를 찾아 삭제하는 간단한 프로그래을 만들어 봤습니다. 등록한 검색어는 일단 많이 보이는 것만 등록했기때문에 없는 것은 쓰실 때 추가하여 사용하시면 됩니다. 저처럼 이상한 검색어 처리떄문에 고생하는 분들은 가져가 잘 사용하시길 바랍니다.



rm_kwords.php
-------------------------------------------------------
<?
include_once("./_common.php");
$g4['title'] = "이상한 인기검색어 등록 및 삭제";
include_once("./_head.php");

if ($member[mb_level] < '9') {
alert("관리자만 가능합니다.");
exit;
}

    $keywords_array = Array(
    "f|same",
    "j|same",
    "F|same",
    "J|same",
    "?|same",
    "bb|same",
    "be|same",
    "m|same",
    "au|same",
    "占쎈|same",
    "誘멸뎅|same",
    "梨?찓姨|same",
    "입니|like",
    "쩍|like",
    "쨍|like",
    "횄|like",
    "찮|like",
    "삥|like",
    "챙|like",
    "援|like",
    "癲|like",
    "?|like",
    "袁|like",
    "쏙옙|like",
    "\\\\\\|like",
    "筌|like",
    "�|like",
    "2012|like",
    "2011|like",
    "2010|like",
    "2009|like",
    "2008|like",
    "2007|like",
    "받으셨|like"
    );
   
    $tbl_list =  $keywords_array;
    $tot_records = sizeof($tbl_list);              // 텍스트 파일의 행수를 구함 

    $k=0;

for ($i=0; $i< $tot_records; $i++) { 
      $array_keywords_tbl = explode('|',$tbl_list[$i]);
      $search_keyword[$i] = $array_keywords_tbl[0];
      if ($array_keywords_tbl[1] == "same") {
          $sql1 = " SELECT * FROM `g4_popular` WHERE `pp_word` LIKE '$array_keywords_tbl[0]'  ";
          //$sql1 = " SELECT * FROM `g4_popular` WHERE `pp_word` LIKE CONVERT( _utf8 '$array_keywords_tbl[0]' USING euckr ) COLLATE euckr_korean_ci ";
      }  else  {
          $sql1 = " SELECT * FROM `g4_popular` WHERE `pp_word` LIKE '%$array_keywords_tbl[0]%' ";
          //$sql1 = " SELECT * FROM `g4_popular` WHERE `pp_word` LIKE CONVERT( _utf8 '%$array_keywords_tbl[0]%'USING euckr ) COLLATE euckr_korean_ci ";
      }
      $result1 = sql_query($sql1);
      if ($result1) { 
          $k=0;
          $delete_cnt[$i]=0;
          $delete_err_cnt[$i]=0;
          for ($j=0; $row=sql_fetch_array($result1); $j++) {
              $k++;
              $delete_id = $row['pp_id'];
              $sql2 = " DELETE FROM `g4_popular` WHERE `g4_popular`.`pp_id` = $delete_id; ";
              $result2 = sql_query($sql2);
              if ($result2) {
                //echo "<font color=black size=3><B>Completed to delete record (#" . $delete_id . ") </B></font><br>";
                $delete_cnt[$i]++;
              }  else  {
                echo "<font color=red size=3><B>Delete error! record (#" . $delete_id . ") </B></font><br>";
                $delete_err_cnt[$i]++;
              }
          }
          $search_records[$i]=$k;
      }
}
?>
<br><br>
<table border="1" width="684">
    <tr>
        <td width="50"><p align="center">No</p></td>
        <td width="300"><p align="center">Keywords</p></td>
        <td width="100"><p align="center">Search Count</p></td>
        <td width="100"><p align="center">Delete OK</p></td>
        <td width="100"><p align="center">Delete NO</p></td>
    </tr>

<?
$k=0;

for ($i=0; $i< $tot_records; $i++) {
    $k++;
    echo "<tr>";
    echo "<td width='50'><p align='center'>$k</p></td>";
    echo "<td width='300'><p align='center'>$search_keyword[$i]</p></td>";
    echo "<td width='100'><p align='right'>$search_records[$i]</p></td>";
    echo "<td width='100'><p align='right'>$delete_cnt[$i]</p></td>";
    echo "<td width='100'><p align='right'>$delete_err_cnt[$i]</p></td>";
    echo "</tr>";

}

echo "</table><br><br>";

include_once("./_tail.php");
?>
-------------------------------------------------------


---- 와 ---- 사이에 있는 부분을 복사하여 rm_kwords.php 로 그누보드를 설치한 디렉토리에 저장하면 됩니다.
삭제할 검색어는 상단에 있는 $keywords_array 에 "검색어|검색구분(same 또는 like)" 으로 들어갑니다.

예로 첫 줄의  "f|same", 는 검색어 'f' 와 똑같은 것을 찾아 삭제를 하는 것이고(옵션 same),  "횄|like" 은 검색어를 구성하는 문자중 '횄' 이 들어간 검색어를 찾아 삭제를 하는 것(옵션 like)입니다.

삭제를 한 후에 등록된 검색어에 대하여 찾은 건수, 삭제 건수, 에러건수가 표로 출력됩니다.

MySql 을 잘 몰라서 위처럼 프로그램을 했어도 "?" (물음표), "\\\\\" 같은 특수문자는 테이블에 분명있는데 프로그램에서 검색도 삭제도 안됩니다. 잘 아시는 분은 어떻게 그런 특수문자를 삭제할 수 있는 지 댓글로 알려주시면 좋겠습니다.
추천
0

댓글 2개

#common.lib.php

if (preg_match("/google|naver|yeti|daum|bing|yahoo|empas|msn|archive|mj12|baidu|yandex|ezooms|bot|slurp|scrap|spider|crawl/", $agent)){
}else{
        // 인기검색어
        $sql = " insert into $g4[popular_table] set pp_word = '$search_str', pp_date = '$g4[time_ymd]', pp_ip = '$_SERVER[REMOTE_ADDR]' ";
        sql_query($sql, FALSE);
}

그냥 user-agent를 확인해서 로봇이면 검색어 등록 안되게 하는게 좋지 않을까요?
루시올라님, 좋은 정보를 알려주셔서 감사합니다. common.lib.php 의 function get_sql_search 에서 해당 부분을 찾아 가르쳐주신대로 했는데도 여전히 이상한 검색어가 들어옵니다.

"f", "m", 'j", "au", "bb" 등 몇 개 검색어는 삭제하자마자 테이블에 바로 새로 등록이 됩니다. bbs 디렉토리의 search.php 와 search2.php 에 조건문을 넣어 등록된 검색어는 g4_popular 테이블에 들어가지 않게 했는데도 마찬가지입니다.  테이블에 들어가는 것을 막으려고 해도 되지않아 위 프로그램을 사후처리의 한 방법으로 사용하고 있습니다. 다른 방법은 없을까요?
전체 3,309 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT