검색에서 아이디 제외했을 때 주소창에서도 막기 정보
검색에서 아이디 제외했을 때 주소창에서도 막기본문
전체검색 또는 게시판 검색에서 아이디 제외하려면 보통 아래와 같이 진행합니다.
1) 전제검색이라면 skin/search 폴더의 검색스킨에서 mb_id 부분 제외
2) 게시판검색이라면 lib/get_data.lib.php 파일에서 function get_board_sfl_select_options($sfl) 또는 function get_qa_sfl_select_options($sfl) 함수에서 mb_id관련 부분 제외
를 하고 검색이 안된다고 생각을 하게 됩니다.
그런데, 전체검색 또는 게시판검색에서 제목으로 검색을 했을 때 주소창에 아래와 같이 나오게 됩니다.
https://sir.kr/g5_tip?sca=&sfl=wr_subject&stx=%EC%95%84%EC%9D%B4%EB%94%94
위에서 sfl=wr_subject 대신에 sfl=mb_id 를 넣고 stx에 아이디를 넣으면 검색이 되게 됩니다.
그래서, 추가 작업을 해야 합니다.
( 아래 방법이 정확한 방법인지는 모르지만 임시방편으로는 사용가능합니다. )
전체 검색은 bbs/search.php 파일에서
$search_query = 'sfl='.urlencode($sfl).'&stx='.urlencode($stx).'&sop='.$sop;
위에 아래 내용을 추가합니다.
if(strstr($sfl, 'mb_id')) { echo "<script>location.replace('".G5_URL."')</script>"; }
또는
if(strstr($sfl, 'mb_id')) { alert("잘못된 접근입니다.", G5_URL); }
게시판 검색의 경우는 lib/get_data.lib.php 파일에서
function get_board_sfl_select_options($sfl) 또는 function get_qa_sfl_select_options($sfl) 중에 원하는 함수에서
$str = ''; 위에 아래 내용을 추가하면 됩니다.
if(strstr($sfl, 'mb_id')) { echo "<script>location.replace('".G5_URL."')</script>"; }
또는
if(strstr($sfl, 'mb_id')) { alert("잘못된 접근입니다.", G5_URL); }
그러면 전체 검색이나 게시판 검색에서 주소창에 sfl에ㅓ mb_id을 넣어도 검색이 되지 않고 홈페이지 메인으로 바로 가던지, 메세지 띄우고 홈페이지 메인으로 가게됩니다.
0
댓글 4개
감사합니다
@너나잘해 조금이라도 도움이 되었으면 하는 바램입니다. ^^
감사합니다!!
@JeongwooLee 특정 필드만 검색되고 다른건 다 막을 때는 아래와 같이 하면 됩니다. /bbs/serach.php에서
// 필드의 수만큼 다중 필드 검색 가능 (필드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;
case 'wr_subject||wr_content' :
//$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;
default :
echo "<script>location.replace('".G5_URL."')</script>";
break;
}