인기검색어 순위에 있는 이상한 검색어 삭제하기 정보
인기검색어 순위에 있는 이상한 검색어 삭제하기- RedRiverFisher 자기소개 아이디로 검색 회원게시물
- 조회 6,154
- 댓글 2
본문
홈페이지의 인기검색어 순위에 이상한 단어들이 뜨는데 프로그램으로 삭제하는 방법을 몰라 그냥 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 을 잘 몰라서 위처럼 프로그램을 했어도 "?" (물음표), "\\\\\" 같은 특수문자는 테이블에 분명있는데 프로그램에서 검색도 삭제도 안됩니다. 잘 아시는 분은 어떻게 그런 특수문자를 삭제할 수 있는 지 댓글로 알려주시면 좋겠습니다.
이상한 검색어를 입력하는 아이피를 추적해 봤더니, 구글(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
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를 확인해서 로봇이면 검색어 등록 안되게 하는게 좋지 않을까요?
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 테이블에 들어가지 않게 했는데도 마찬가지입니다. 테이블에 들어가는 것을 막으려고 해도 되지않아 위 프로그램을 사후처리의 한 방법으로 사용하고 있습니다. 다른 방법은 없을까요?
"f", "m", 'j", "au", "bb" 등 몇 개 검색어는 삭제하자마자 테이블에 바로 새로 등록이 됩니다. bbs 디렉토리의 search.php 와 search2.php 에 조건문을 넣어 등록된 검색어는 g4_popular 테이블에 들어가지 않게 했는데도 마찬가지입니다. 테이블에 들어가는 것을 막으려고 해도 되지않아 위 프로그램을 사후처리의 한 방법으로 사용하고 있습니다. 다른 방법은 없을까요?