광고성글을 골탕먹이는 기똥찬 스킨 > 그누4 스킨

그누4 스킨

스킨의 저작권은 해당 스킨 제작자님께 있으며, 그누보드의 저작권과 다를 수 있습니다.
스킨 다운로드시 좋아요와 감사의 코멘트를 남기시면 제작자에게 큰 힘이됩니다. ^^y
그누보드와 관련이 있지만 스킨과 빌더가 아니면 플러그인 게시판에 올려주세요.

광고성글을 골탕먹이는 기똥찬 스킨 정보

게시판 광고성글을 골탕먹이는 기똥찬 스킨

첨부파일

approval_board.zip (56.0K) 123회 다운로드 2006-04-14 22:45:26

본문

u본스킨은 제목을 뭐라할지 난감하네요
일명 승인제 게시판이라고 합시다

똥순이가 글을 작성하면 글쓴 내용은 똥순이와 관리자만 볼수 있습니다.
ip가 다른 컴퓨터에서 똥순이가 쓴글은 볼수가 없습니다. 감쳐줘서 그렇지요
관리자가 그 글에 대해 승인을 해줘야 똥순이가 작성한글은 아무나 볼수 있습니다.

본 스킨의 주 목적은 관리자가 게시판 글(코멘트글 포함)을 확인하고 성격에 맞는 글이면 등록처리를 해주는 스킨입니다


게시판 필드중 wr_nogoood,wr_ip 필드를 활용했슴다
그리고 그누보드 원본 소스를 수정해도 문제될게 없게끔 수정했습니다

스킨 적용 절차를 알림다

■■■1. 관리자화면 - 환경설정 - 여분 필드10 에 "게시판승인제"라고 입력하고 저장합니다

■■■2.common.php 파일 내용중 맨 마지막 아래 내용 하나 추가해서 저장합니다

if ($config[cf_10] && $member[mb_level]==10) { $ssh_wr_nogood="";} else { $ssh_wr_nogood =" and (wr_nogood >=0 or wr_ip='$_SERVER[REMOTE_ADDR]') ";}  //##add06-04-12



■■■3./bbs/list.php 내용중에

[수정전]

1) 24행쯤에
---------------------
  $sql = " select MIN(wr_num) as min_wr_num from $write_table ";
---------------------이거를

---------------------
//    $sql = " select MIN(wr_num) as min_wr_num from $write_table ";
    $sql = " select MIN(wr_num) as min_wr_num from $write_table where 1=1 $ssh_wr_nogood";  //##add06-04-12
---------------------이렇게 고침다


2) 31행쯤에
---------------------
    $sql_search .= " and (wr_num between '".$spt."' and '".($spt + $config[cf_search_part])."') ";
---------------------이거를

---------------------
    $sql_search .= " and (wr_num between '".$spt."' and '".($spt + $config[cf_search_part])."') ";
    $sql_search .=$ssh_wr_nogood; //##add06-04-12  <=이부분 추가된것임
---------------------이렇게 고침다

3) 77행쯤에
---------------------
  $sql = " select * from $write_table where wr_is_comment = 0  $sql_order limit $from_record, $board[bo_page_rows] ";
---------------------이거를

---------------------
//    $sql = " select * from $write_table where wr_is_comment = 0  $sql_order limit $from_record, $board[bo_page_rows] ";
    $sql = " select * from $write_table where wr_is_comment = 0  $ssh_wr_nogood  $sql_order limit $from_record, $board[bo_page_rows] "; //##add06-04-12 <=추가됨
---------------------이렇게 고침다


■■■4./lib/latest.lib.php 내용중에

1) 20행쯤에
---------------------
  $sql = " select * from $tmp_write_table where  wr_is_comment = 0 order by wr_id desc limit 0, $rows ";
---------------------이거를

---------------------
//    $sql = " select * from $tmp_write_table where  wr_is_comment = 0 order by wr_id desc limit 0, $rows ";
    $sql = " select * from $tmp_write_table where  wr_is_comment = 0".$GLOBALS["ssh_wr_nogood"]." order by wr_id desc limit 0, $rows "; //##add06-04-12
---------------------이렇게 고침다




■■■5./bbs/new.php(최신글) 내용중에
1) 51행쯤에

---------------------
        $row2 = sql_fetch(" select * from $tmp_write_table where wr_id = '$row[wr_id]' ");
---------------------이거를

---------------------
//        $row2 = sql_fetch(" select * from $tmp_write_table where wr_id = '$row[wr_id]' ");
        $row2 = sql_fetch(" select * from $tmp_write_table where wr_id = '$row[wr_id]' $ssh_wr_nogood "); //##add06-04-12
---------------------이렇게 고침다

2) 69행쯤에
---------------------
        $row2 = sql_fetch(" select * from $tmp_write_table where wr_id = '$row[wr_parent]' ");
        $row3 = sql_fetch(" select mb_id, wr_name, wr_email, wr_homepage, wr_datetime from $tmp_write_table where wr_id = '$row[wr_id]' ");
---------------------이거를

---------------------
//        $row2 = sql_fetch(" select * from $tmp_write_table where wr_id = '$row[wr_parent]' ");
//        $row3 = sql_fetch(" select mb_id, wr_name, wr_email, wr_homepage, wr_datetime from $tmp_write_table where wr_id = '$row[wr_id]' ");
        $row2 = sql_fetch(" select * from $tmp_write_table where wr_id = '$row[wr_parent]'  $ssh_wr_nogood  ");//##add06-04-12
        $row3 = sql_fetch(" select mb_id, wr_name, wr_email, wr_homepage, wr_datetime from $tmp_write_table where wr_id = '$row[wr_id]'  $ssh_wr_nogood  ");//##add06-04-12
---------------------이렇게 고침다



■■■6./bbs/search.php(검색) 내용중에

1) 112행쯤에
---------------------
    $sql_search = $str;
---------------------이거를

---------------------
    $sql_search = $str;
    $sql_search .=$ssh_wr_nogood; //##add06-04-12
---------------------이렇게 추가함다





■■■7./skin/new/basic/new.skin.php(최신글) 내용중에

1) 57행쯤에
---------------------
    echo <<<HEREDOC
---------------------이거를

---------------------
if ($wr_subject){  //##add06-04-12
    echo <<<HEREDOC
---------------------이렇게 추가함다

2) 69행쯤에
---------------------
HEREDOC;
}
---------------------이거를

---------------------
HEREDOC;
}
} //##add06-04-12
---------------------이렇게 추가함다

■■■8./bbs/view_comment.php내용중에

1) 14행쯤에
---------------------
$sql = " select * from $write_table where wr_parent = '$wr_id' and wr_is_comment = 1 order by wr_comment desc, wr_comment_reply ";
---------------------이거를

---------------------
//$sql = " select * from $write_table where wr_parent = '$wr_id' and wr_is_comment = 1 order by wr_comment desc, wr_comment_reply ";
$sql = " select * from $write_table where wr_parent = '$wr_id' and wr_is_comment = 1  $ssh_wr_nogood order by wr_comment, wr_comment_reply "; //##add06-04-12
---------------------이렇게 추가함다



■■■9.본 스킨중에 write_update.skin.php 내용에 뭐가 있는지 확인합니다.(그누보드 원래 소스는 내용없는것이었음)
###############################################
if ($config[cf_10] && $member[mb_level]<2){
sql_query(" update $write_table set wr_nogood=-1 where wr_id = '$wr_id' ");
}
###############################################
회원레벨이 2보다 작다 즉 레벨이 방문자(손님)인 경우 비승인글로 바꾸라는 말임다


■■■10. 기타 수정할 파일
1) 본 스킨 파일중에 ssh_yn_process.php은 그누보드설치폴더인 /bbs로 옮겨주세요

2)/bbs/skin/latest/적용할스킨명/latest.skin.php 파일 내용중에
---------------------------------------
if($list[$i][comment_cnt]) {

---------------------이런 부분이 있으면

---------------------------------------
//##add06-04-12
$qry=" SELECT count(*) as coment_cnt FROM $tmp_write_table WHERE wr_parent=".$list[$i][wr_parent]." and  wr_is_comment >0 $ssh_wr_nogood ";
$cnt_val= sql_fetch($qry);
if ($cnt_val[coment_cnt]>0) {$list[$i][comment_cnt]="(".$cnt_val[coment_cnt].")";}
//##add06-04-12
if($list[$i][comment_cnt]) {
---------------------------------------
이렇게 수정해주세요


또한 write_comment_update.skin.php 파일이 누락되지 않게 주의해주세요

여기까지 스킨적용절차입니다


이제 비회원이 글을쓰면  관리자가보면 new라는 아이콘으로 깜빡거리는것을 볼수 있습니다






@@@@@@@@@@생각해 볼 문제@@@@@@@@@@@@@@@@@

1.왜 여분 필드를 활용하지 않고 비추천 필드를 사용하였나요?
=> 여분필드를 사용중인 게시판을 본 스킨으로 교체할때 불편한점이 생길수 있어서입니다.
제일 만만한 비추천필드를 사용했슴다.
그러나 소스수정해서 여분 필드를 활용해서 사용해도 됩니다.

2.기존에 사용중인 게시판을 본 스킨으로 변경할경우 에러가 날수 있나요?
=> 사용중인 게시판에 특정 스킨을 적용시키면 에러나는 경우가 생기는데 본스킨은 그럴리가 없슴다
그러나 비추천필드를 사용해서 본 스킨 구현한것이기 때문에 비추천값 영향을 받습니다
곧 어떤 글 비추천수가 35인데 리스트에서 승인 취소중 취소를 적용시키면 비추천값이 -1로 변경된다는것입니다
그래서 비추천수를 무시해도 되는 게시판인지 확인해야겠지요
죽어도 비추천수를 무시못하겠소 라고 한다면 1.번에서 힌트 얻어서 처리하이소

3.그누보드가 계속 업데이트되면서 본 스킨내용중 확인해야할 사항은 뭡니까?
그누보드 파일중 /bbs/delete_all.php의 내용중에 변경사항 생기면
/bbs/ssh_yn_process.php파일 21행부터 147까지 내용 확인을 해야 합니다
21행부터 147까지를 delete_all.php에서 일부 배껴왔걸랑요
특별히 그누보드 파일이 업데이트되면서 delete_all.php 파일내용이 변경될 확률은 극히 적을거 같슴다

4.본 스킨을 적용해서 나중에 편집하거나 지우고자 할때 편리한 방법은 뭡니까?

에디터 플러스나 기타 개발툴로 파일내용중에  ##add06-04-12 라고 주석처리된 부분을 찾으면 됩니다
 (참고로 저는 #add06-04-12 처럼 #add+"날짜" 식으로 해서 언제 수정된 라인인지 주석처리해서 사용중)


5.이론 저는 관리자화면 - 환경설정 - 여분 필드10을 사용하고 있는데 어쩝니까?
방법이 있습니다
설마 여분필드 1부터 10까지 다 사용하진 않겠지요?
남는 필드중에 사용할 여분필드가 5 이면 common.php 제일 마지막 줄에
#######################################################
if ($config[cf_5] && $member[mb_level]==10) { $ssh_wr_nogood="";} else { $ssh_wr_nogood =" and (wr_nogood >=0 or wr_ip='$_SERVER[REMOTE_ADDR]') ";}  //##add06-04-12
#######################################################
이렇게 바꾸면 됩니다. cf_10을 cf_5로 변경한 겁니다


6.회원중에 레벨이 5이하인 회원이 글 쓰면  비승인글로 등록되게 하려면 어짭니까?

고쳐야 할게 있슴다
본스킨 파일 write_update.skin.php 내용중에
###############################################
if ($config[cf_10] && $member[mb_level]<2){
sql_query(" update $write_table set wr_nogood=-1 where wr_id = '$wr_id' ");
}
###############################################
여기서 $member[mb_level]<2 를 $member[mb_level] <=5 로 고치면 끝


7.회원레벨이 8이상인 회원에게 승인,비승인글 관리할 권한을 주고 싶어요
=> 본스킨 내용중에 $config[cf_10] && $member[mb_level]==10 를
$config[cf_10] && $member[mb_level]>=8 이렇게 고치면 되요
그리고 그 회원이 게시판 관리권한이 있어야 하겠지요

이런 내용있는 파일을 일일이 열어서 찾기 귀찮다고 한다면
개발툴로  #add06-04-12 라는 문장이 들어있는 파일을 몽땅뽑아내세요
그담 $member[mb_level]=10인 곳을 찾아서 고치면 되겟죠


8.그누보드에 자동등록방지 사용,특정 회원차단,특정ip차단,비밀글등의 기능이 있는데
이런 기능하고 비교한다면?
=>
자동등록방지와 비밀글은 본 스킨과 전혀 다른 기능으로 무관합니다

특정 회원차단,특정ip차단은
불량회원이 불량글을 써서 , 특정아이피에서 광고성 글이 올라와서 뭐 기타등등의 이유로 사용되겠죠

요약컨대 본 스킨의 주 목적은 관리자가 게시판글을 확인하고 성격에 맞으면 등록처리를 해주는 스킨입니다




그렇다면 이런 스킨을 만든 동기가.......

아무나 글 쓸수 있는 비회원용 게시판인 경우

예1)
지금시각 저녁 11시에
"따르릉.................."
"여보세요?"
"팀장 홈페이지에 이상한 글이 올라왓다.얼렁 지워"
"네 알겟슴다(된장.그럼 회원만 글쓰게 바꾸든지 하지 왜 아무나 쓰게 하냐고요..) "


예2) 똥순이와 그 일당들이 광고성 스팸글을 방명록에 매일같이 올린다고 생각해 봅시다

하루에 그런 글이 수십개 된다고 생각해봅시다. 그거 일일이 선택해서 일괄삭제하는일도 머리에 뚜껑열리는 작업입니다.

그래서 저는  똥순이와 그 일당들을 어떻게 골탕먹여볼까 고민고민하다가.......

똥순이가 글쓰면 등록되게해서 그 글은 똥순이에게는 보여주자

다른 곳의 네티즌들은 똥순이가 올린 글을 절대 볼수 없다. 왜냐 아이피가 다르기때문이죠


=> 테스트용 사이트 입니다.문제점아 있다면 리플을 달아주세요
승인,취소,비승인글 일괄삭제를 아이콘으로 만들어야 하는데 생략햇슴다
http://purumi-ne.com/g/bbs/board.php?bo_table=skin_test




첨부로 올린 스킨파일 삭제했습니다.ㅡ,.ㅡ
이유는 맨 아래 보세요
추천
1
  • 복사

댓글 전체

한가지 질문드립니다
아래의 "관리자 승인한것만 보이기" 스킨과 어떤차이점이 있는지요
http://www.sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=9136

그리고 wr_nogood 필드를 사용한다고 하셨는데...
이 필드를 관리자가 아닌 사용자가 직접 수정할수있는 버그에 대한 대책은 있으신지요?


멋진작품을 올리셨는데.. 원본프로그램을 너무 많이 손보는것 같아서
자주 업그레이드 되는 그누보드에서 사용자가 사용하기 조금 부담스러운면이 있어보이는군요

멋진 작품 올려주셔서 감사합니다 ^^
아뿔사 있었군요 ㅠㅠ 열라 스킨자료 뒤졌는데 안보이던디...ㅠㅠ

root님이 얘기하신 http://www.sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=9136 스킨을 적용해서 테스를 해보았습니다. (글쓰고 메신저에 잇는 친구에게 글 봐달라고 하니 나온다네요..ㅠㅠ 뭐가 잘못된건지)

차이점은
1./bbs/new.php 최신글에도 승인된 글만 검색이 되고 전체검색에도 승인된글만 나와요
2.주로 메인페이지에 나오는 최근게시글에도 승인된 글만 나옵니다
3.또한 승인된 코멘트글만 나오고 더군다나 제목옆(2) 괄호안의 코멘트수도 승인된갯수만 나옵니다

수정된 소스를 보면 크게 문제될만한 부분이 없는거 같아서 본 스킨을 올렸습니다만
윗글 root님의 우려를 받아들여 첨부파일을 삭제를 했습니다. 글까지 삭제하려 했지만  이미 보았던분에게 예의가 아니라 생각되어 이렇게 글로 해명합니다

그누보드 업데이트주기가 요즘은 드문데 전에는 자주 업그레이드 되어 커스터마이징 한 부분이 많은 경우
기존 사용하던 그누보드를 백업받고 새버전 그누보드를 덮어쓴다음
편집툴로 백업본 중에 #add가 들어잇는 코드문장을 다 찾아내어 그부분만 새 그누보드 버전 해당파일에 끼워 넣어서 사용해왔습니다.이렇게 하니깐 편하더군요..^^

가급적 그누보드 원형을 보존하려했지만 이번 스킨은 불가피하게 되었네요

더 나은 그누보드를 위해 본 스킨 첨부파일 삭제된거 양해 부탁드리겠습니다
 
본 글에 대해 3일 뒤에 삭제할 예정입니다.
어.. 그렇다고 첨부파일 삭제하실 필요는 없는데...
혹시나 다른점이 뭔가 궁금해서 올린것이었습니다.

같은 내용이라 하더라도 구현방법이 다르므로 선택은 사용하시는분이 선택하실수 있도록 하시는것이 좋을듯 합니다.

자세한 부연설명 감사합니다 ^^
© SIRSOFT
현재 페이지 제일 처음으로