검색어중에서 회원 아이디를 원천봉쇄(?) 하려면 어떻게 해야하나요?

· 2010-12-24 (금) 10:13:28 · 1130 · 2
lib/common.lib.php 에서 mb_id를 비교하는 구문을 잘 입력한것 같은데 구동이 확실치 않은것 같아서요.
조언좀 부탁드립니다.


회원아이디가 있다면 검색db에 저장하지 마라(곧 인기검색어에 회원아이디가 나오면 안됨)를 구현하고 싶습니다.


lib/common.lib.php
[code]
// 검색 구문을 얻는다.
//function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator=false)
function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator='and')
{
global $g4,$board,$urlencode;

$str = "";
if ($search_ca_name)
$str = " ca_name = '$search_ca_name' ";

$search_text = trim($search_text);

if (!$search_text)
return $str;

if ($str)
$str .= " and ";

// 쿼리의 속도를 높이기 위하여 ( ) 는 최소화 한다.
$op1 = "";

// 검색어를 구분자로 나눈다. 여기서는 공백
$s = array();
$s = explode(" ", $search_text);

// 검색필드를 구분자로 나눈다. 여기서는 +
//$field = array();
//$field = explode("||", trim($search_field));
$tmp = array();
$tmp = explode(",", trim($search_field));
$field = explode("||", $tmp[0]);
$not_comment = $tmp[1];

$str .= "(";
for ($i=0; $i<count($s); $i++) {
// 검색어
$search_str = trim($s[$i]);
if ($search_str == "") continue;

if ($field[$k] != "mb_id") {
// 인기검색어
$sql = " insert into $g4[popular_table] set bo_table='$board[bo_table]', mb_id='$_SESSION[ss_mb_id]', url='$urlencode', pp_word = '$search_str', pp_date = '$g4[time_ymd]', pp_ip = '$_SERVER[REMOTE_ADDR]' ";
sql_query($sql, FALSE);
}

$str .= $op1;
$str .= "(";

$op2 = "";
for ($k=0; $k<count($field); $k++) { // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)
$str .= $op2;

// - 추가 . 이동 된 부분 시작 -
if ($field[$k] != "mb_id") {
// 인기검색어
$sql = " insert into $g4[popular_table] set bo_table='$board[bo_table]', mb_id='$_SESSION[ss_mb_id]',url='$urlencode', pp_word = '$search_str', pp_date = '$g4[time_ymd]', pp_ip = '$_SERVER[REMOTE_ADDR]' ";
sql_query($sql, FALSE);
}
// - 추가 . 이동 된 부분 끝 -

switch ($field[$k]) {
case "mb_id" :
case "wr_name" :
$str .= " $field[$k] = '$s[$i]' ";
break;
case "wr_hit" :
case "wr_good" :
case "wr_nogood" :
$str .= " $field[$k] >= '$s[$i]' ";
break;
// 번호는 해당 검색어에 -1 을 곱함
case "wr_num" :
$str .= "$field[$k] = ".((-1)*$s[$i]);
break;
// LIKE 보다 INSTR 속도가 빠름
default :
if (preg_match("/[a-zA-Z]/", $search_str))
$str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))";
else
$str .= "INSTR($field[$k], '$search_str')";
break;
}
$op2 = " or ";
}
$str .= ")";

//$op1 = ($search_operator) ? ' and ' : ' or ';
$op1 = " $search_operator ";
}
$str .= " ) ";
if ($not_comment)
$str .= " and wr_is_comment = '0' ";

return $str;

}
[/code]
|

댓글 2개

자기 아이디를 검색하는걸 막는건가요??
if ($field[$k] != "mb_id") {
if ($field[$k] != $member[mb_id]) {

그렇다면 요렇게
2010-12-27 (월) 09:17:36
자기 아이디 뿐만 아니라 모든 회원 아이디요
댓글을 작성하시려면 로그인이 필요합니다.

그누4 질문답변

66,531건

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기 기존 게시물은 열람만 가능합니다.

+
제목 글쓴이 날짜 조회
10-12-24 조회 883
10-12-24 조회 875
10-12-24 조회 1,086
10-12-24 조회 891
10-12-24 조회 836
10-12-24 조회 1,133
10-12-24 조회 1,025
10-12-24 조회 1,074
10-12-24 조회 901
10-12-24 조회 1,089
10-12-24 조회 1,009
10-12-24 조회 1,116
10-12-24 조회 1,638
10-12-24 조회 1,131
10-12-24 조회 732
10-12-24 조회 3,237
10-12-23 조회 869
10-12-23 조회 860
10-12-23 조회 913
10-12-23 조회 943