특정 게시판의 검색을 못하게 하려면... > 그누4 질문답변

그누4 질문답변

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

특정 게시판의 검색을 못하게 하려면... 정보

특정 게시판의 검색을 못하게 하려면...

본문

게시판의 하단에 있는 검색기능을 죽여도 url을 이용해서 검색을 허더라구요.
익명 게시판의 경우 그런 기능을 이용해서 누가 쓴 글인지 추적(?)도 하구요.
 
그래서, 특정 게시판(helpme)의 경우 검색을 못하게 막으려 하는데
/bbs/list.php를 보니까 너무 많이 수정해야 되는지 참 난감하더라구요.
 
어디 한번 고치면 해결되는 방법이 없을까요???

댓글 전체

1. 가장 일반적인 우회방법은 '전체검색'을 통해 접근하는 것
2. 질문내용처럼 타 게시판에서 검색시 사용되는 url로 해당 게시판의 검색에 접근하는 것


답 : 전체검색 해제 + 해당 스킨에서 검색에 관한 구문을 삭제
(/skin/board/스킨이름/list.skin.php <<<=== 수정을 검토할 영역)
어느 정도의 구조를 알고 있다면,
전체검색이 막혔을 경우 게시판 내에서,
타 게시판의 url을 활용하여 접근할 가능성은 큽니다.
(물론, 목록보기 및 읽기 권한이 가능해야 하겠지요.)

(예) 게시판 내 제목검색 and조건 ===>>> 키워드 : 연습
/bbs/board.php?bo_table=information&sca=&sfl=wr_subject&stx=%EC%97%B0%EC%8A%B5&sop=and
스킨에서 적용 가능할 것 같습니다.

파일 : skin/board/스킨/list.skin.php

상단에 다음 코드를 넣어주세요.

if($sfl) alert('검색하실 수 없습니다.');

특정 게시판만을 원하실 경우 다음과 같이 코드를 작성하시면 됩니다.

// 검색 막을 게시판 id
$no_search = array('helpme','test','noname');

if ( in_array($bo_table, $no_search) && ($sfl) ) alert('검색하실 수 없습니다.');
특정 필드만 검색하지 못하게 수정하고 있습니다^^

익명 게시판을 만들어 뒀더니 이런 방법으로 누가 쓴 글인지 찾았다는... -..-a
오늘 아침에 제보(?)를 받고 깜짝 놀랐습니다. 이렇게 사용자들이 영특할 수가...
wr_id, wr_name은 실제 의미가 없습니다.
익명게시판(회원이 아닌 비회원인 경우를 생각한다면)이라면,
IP로 검색했을 가능성이 큽니다.
물론 동일한 IP인 경우만 체크해 본 것이 아니라,
비슷한 시각대(또는 이전의 경우도 비교 검토)에,
비슷한 IP대역에서 게시물 작성자의 행동을 추정할 수 있기 때문입니다.

관련 예1 : sir.co.kr/bbs/board.php?bo_table=cm_free&sca=&sfl=wr_ip&stx=211.+.39.127&sop=and
관련 예2 : http://sir.co.kr/bbs/board.php?bo_table=cm_free&sca=&sfl=wr_ip&stx=211.+.39.+&sop=and
$no_search_board = array('helpme','no_oneline','noname');
$no_search_field = array('wr_id','wr_name');
if ( in_array($bo_table, $no_search_board) && in_array($sfl, $no_search_field) ) alert('해당 항목은 검색하실 수 없습니다.');

이런식으로 수정해서 /bbs/list.php의 앞에 넣었더니... 안되네요. 뭐가 잘못된 것인가요??

helpme, no_oneline, noname 게시판에서 wr_name, wr_id 검색을 막고 싶은 경우인데...
아~ 그렇네요^^ 수정했어요. 그런데, 해당 조건이 되었는데 alert가 안뜨네요. -..-a

helpme 게시판에서 이름으로 검색하면 alert가 떠야 하쟎아요?... php 어렵네요

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

$no_search_board = array('helpme','no_oneline','noname');
$no_search_field = array('mb_id','wr_name');
//if ( in_array($bo_table, $no_search_board) && $sfl ) alert('해당 항목은 검색하실 수 없습니다.');
if ( in_array($bo_table, $no_search_board) && sfl && in_array($sfl, $no_search_field) ) alert('해당 항목은 검색하실 수 없습니다.');

$bo_table에 $bo_search_board의 게시판 이름이 있거나 $sfl에 값이 있으면서
그 값이 $bo_search_field에 있으면... 경고 때린다... 틀린 것이 없는거 같은데 안되네요
if ( in_array($bo_table, $no_search_board) && sfl && in_array($sfl, $no_search_field) ) alert('해당 항목은 검색하실 수 없습니다.');

중간에 && sfl &&  요게 들어가있네요? ㅎㅎㅎ
if ( in_array($bo_table, $no_search_board) && $sfl && in_array($sfl, $no_search_field) ) alert('해당 항목은 검색하실 수 없습니다.');

-..- 알려주신 것은 제가 질답에 옮기면서 생긴오류고 실제 code는 지적하신대로 위에 처럼 했어요. 그러네 안되는 거라... 으~ 딴일이 안되네요. 마음이 심란해져서...
이런경우  echo $sfl; 해서 변수값을 출력해보면 원인을 알아내기가 수월합니다.

회원아이디로 검색하는경우 echo $sfl; 해보면 다음과 같은 결과가 나옵니다.

mb_id,1

이제 검색창 부분 소스를 보면 아래와 같이 되어있습니다.

            <option value='wr_subject'>제목</option>
            <option value='wr_content'>내용</option>
            <option value='wr_subject||wr_content'>제목+내용</option>
            <option value='mb_id,1'>회원아이디</option>
            <option value='mb_id,0'>회원아이디(코)</option>
            <option value='wr_name,1'>이름</option>
            <option value='wr_name,0'>이름(코)</option>

따라서  $no_search_field = array('mb_id','wr_name');  부분을 아래와 같이 수정해주셔야 합니다.

$no_search_field = array('mb_id,1','mb_id,0','wr_name,1','wr_name,0');
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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