선배님들 소스 좀 봐주세요....

선배님들 소스 좀 봐주세요....

QA

선배님들 소스 좀 봐주세요....

본문

일단 그누보드 기존의 그룹개념을 조금 벗어납니다.

그룹을 여러 개 만들어 두고, 회원을 그룹별로 분류합니다.

(이렇게 하면 일단 한 사람이 한 개나 여러 개의 그룹에 회원이 될 수 있어요.)

그룹게시판은 따로 사용을 안하구요....

 

대신 모든 그룹에 공개된 (다른 그룹의)게시판의 여분필드에 그룹 아이디를 넣어서 게시판을 생성하고

해당 그룹 회원이 아니면 리스트는 보이지만 뷰 페이지가 보이지 않도록 하려고 합니다.

 

view.skin.php  상단에 적용.
----------------------------------------
//관리자가 게시판에서 여분필드에 지정한 그룹 회원만 뷰 페이지를 출력
$pass_uer = "";
if($board[bo_6]){
    $arr = explode("|", $board[bo_6]); // 구분자가 , 로 되어 있음
    $str = "";
 $arr_num = count($arr);
    for ($s=0; $s<$arr_num; $s++){
        if (trim($arr[$s])){


              if($arr[$s] == $member[mb_id]){ //------- 여기 부분을 회원 아이디가 아니라 회원이 해당 그룹에 속해 있으면으로 바꾸고 싶습니다.
                $pass_uer = 1;
              }        
        }

    }
 }
}

if($pass_uer)
;
else
alert("해당 그룹의 회원만 내용보기가 가능합니다.\\n\\n궁금하신 사항은 관리자에게 문의 바랍니다.");

 

 

이런식 비슷하면 될 것 같은데.... 안될까요?  

이 질문에 댓글 쓰기 :

답변 3

이렇게 해봅시다.

접근가능그룹도 여러개고... 

회원이 가입한 그룹도 여러개인 경우...

가 있을겁니다.

 

게시판에 접근 가능한 그룹이 a,e,c 이고

회원이 가입된 그룹이 c,g,f,h 일 경우가 생기겠죠..

그러면.. 

 

게시판에 접근가능한 그룹을 배열로 뽑고

회원이가입한 그룹을 배열로 뽑아서

교집합의 카운트가 0 보다 크면

읽을수 있게 하도록 해보죠..

 

회원정보쪽에 확장칼럼을 쓰건 추가로 칼럼을 생성하건 해서 .. 

일단 있는데다 쓰는걸로 하죠 

$member[mb_1]  <= 이건  a/e/c 형식으로 되있는 유저가 가입한 그룹입니다.

a,e,c그룹에 가입되있네요

 

$mb_group = explode("/",$member[mb_1]);

이렇게 /로 쪼개서 배열로 변환합니다.

 

게시판 설정에서 확장칼럼에다가  하나 넣었다고 치고...

$board[bo_1]  <= 이건  c/g/f/h  형식으로 되있고 게시판 글읽기가 가능한 그룹? 으로 상정합시다

c,g,f,h 네 그룹이 권한이 부여되었네요

 

$bo_group = explode("/",$board[bo_1] );

얘도 쪼개서 배열로 바꿔주고요

 

그다음에 두개의 배열을

http://php.net/manual/kr/function.array-intersect.php 

요 함수를 써서 교집합을 구합니다.

 

$result = array_intersect($bo_group,$mb_group); 

그럼 결과값은 두개의 교집합이 되는  c 가 들어있는 배열이 됩니다.

 

여기서 count($result) 를 하면, 교집합의 갯수가 표시되겠죠..

 

교집합의 갯수가 1보다 작으면 권한이 없으니 경고메세지 출력후 돌려보내기 

교집합의 갯수가 1과 같거나 크면 권한이 있는거니 내용출력

 

이렇게 한번 짜보는건 어떨까요??

 

 

 

 

저도 만들고 있는거라서 ㅎㅎ;

 

그누보드의 그룹은 게시판 그룹이니 제끼고... 

 

(이건 그냥 놔뒀습니다 그안에다가 조건문을 하나 더 넣었죠)

 

 

회원정보에다가 회원이 가입한 그룹을 그룹1|그룹2|그룹3 형식으로 넣고

 

$member[mb_group] 변수에다 불러다 넣었습니다. db에도 같은 칼럼생성해서 넣었구요

 

게시판 뷰페이지에서

 

접근가능한 그룹을 그룹2로 지정하면

 

그룹2의 문자열이 회원정보이 그룹에 포함되는가를 검색해서

 

권한을 부여한다.. 뭐 이런식으로 만들었는데

 

 

 

 

 

view.php 파일에서

 

$view[mb_group] 이게 게시물 접근가능 그룹이고

$member[mb_group] 이게 유저가 가입한 그룹이라면  

 

if(strpos($member[mb_group], $view[mb_group]) !== false) {  

   //  게시글 출력

} else {  

    // 킥  

}

 

하는 식으로 조건문 주고

 

//킥 쪽에다가는 

header 같은 명령 써서 특정한 URL로 날려 보내는 방식을 쓴다던가

아니면 alert 써서 "권한이 없습니다. " 정도 메세지 출력해주고 

history -1 해서 이전화면으로 보내버린다던가 

하는 식으로 만들면 어떻겠습니까 ?

 

 

 ============

 

문자열 겹치는것도 있을테니까 

그룹을 |로 나눠놨으니 이걸 배열로 explode 한 다음에

in_array() 를 써서  그룹 값을 체크하는게 더 바람직하겠네요

 

일단 그룹 접근은...

 

그룹 접근은...
        // 그룹관리자 이상이라면 통과
        if ($is_admin == "super" || $is_admin == "group") {
            ;
        } else {
            // 그룹접근
            $sql = " select count(*) as cnt from {$g5['group_member_table']} where gr_id = '{$board['gr_id']}' and mb_id = '{$member['mb_id']}' ";
            $row = sql_fetch($sql);
            if (!$row['cnt']) {
                alert("접근 권한이 없으므로 글읽기가 불가합니다.\\n\\n궁금하신 사항은 관리자에게 문의 바랍니다.", G5_URL);
            }
        }

 

이렇게 되지요???? 

답변을 작성하시기 전에 로그인 해주세요.
전체 61,332
QA 내용 검색

회원로그인

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