테스트 사이트 - 개발 중인 베타 버전입니다

전체검색, 게시판내의 검색에서 아이디 검색 제외하기 채택완료

동글이 1년 전 조회 1,993

전체검색, 게시판내의 검색에서 아이디(mb_id) 검색 제외하려고 아래 2가지를 했습니다.

1) lib/get_data.lib.php 에서 function get_board_sfl_select_options($sfl), function get_qa_sfl_select_options($sfl) 함수에서 mb_id 관련된 부분 삭제

2) skin/search 에서도 mb_id관련 부분 삭제

 

를 했습니다. 그런데 주소창에서 &sfl=wr_subject 대신에 &sfl=mb_id 로 바꾸고 &stx= 에 아이디를 넣으면 검색이 되더라구요.

검색창에 &sfl= 에 아이디를 넣어도 검색이 되지 않게 하려면 어떻게 해야할까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

1년 전

lib/common.php의 get_sql_search 함수에서 

case "mb_id" :
                case "wr_name" :
                    $str .= " $field[$k] = '$s[$i]' ";
                    break;

부분이 있을텐데

mb_id 부분이랑 wr_name을 같이 하지 말고 그냥 따로해서

$str .= " 1 = 0 " 으로해서 검색을 못하게 하면 되실거 같습니다. 메뉴에서 빼셨다니 직접 검색을 막는거면 해당 정도만 해도 되지 않을까 싶네요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

동글이
1년 전
답변 감사합니다. 아래와 같이 했는데도 주소창에서 mb_id나 wr_email 으로 변경을 하면 검색이 되어서요.
// 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)
for ($k=0; $k<count($field); $k++) {
$str .= $op2;
switch ($field[$k]) {
case 'wr_name' :
$str .= "$field[$k] = '$s[$i]'";
break;
case 'wr_subject' :
case 'wr_content' :
if (preg_match("/[a-zA-Z]/", $search_str))
$str .= "INSTR(LOWER({$field[$k]}), LOWER('{$search_str}'))";
else
$str .= "INSTR({$field[$k]}, '{$search_str}')";
break;
default :
//$str .= "1=0"; // 항상 거짓
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 ";
}
동글이
1년 전
sir.kr에서는 주소창에서 변경해서 검색하는 부분을 막아 놓은거 같은데,
그누보드 데모 또는 최신 그누보드에서도 주소창에서 변경을 하면 검색이 됩니다.
아래처럼 sfl 에 wr_email을 입력을 해도 검색이 됩니다.
https://demo.sir.kr/gnuboard5/bbs/search.php?sfl=wr_email%7C%7Cwr_content&sop=and&stx=test

댓글을 작성하려면 로그인이 필요합니다.

동글이
1년 전

맞는 방법인지는 모르지만, 아래와 같이 해서 임시방편으로 사용하고 있습니다.

https://sir.kr/g5_tip/21881

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인