선배님들 소스 좀 봐주세요.... 채택완료
일단 그누보드 기존의 그룹개념을 조금 벗어납니다.
그룹을 여러 개 만들어 두고, 회원을 그룹별로 분류합니다.
(이렇게 하면 일단 한 사람이 한 개나 여러 개의 그룹에 회원이 될 수 있어요.)
그룹게시판은 따로 사용을 안하구요....
대신 모든 그룹에 공개된 (다른 그룹의)게시판의 여분필드에 그룹 아이디를 넣어서 게시판을 생성하고
해당 그룹 회원이 아니면 리스트는 보이지만 뷰 페이지가 보이지 않도록 하려고 합니다.
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">http://php.net/manual/kr/function.array-intersect.php
요 함수를 써서 교집합을 구합니다.
$result = array_intersect($bo_group,$mb_group);
그럼 결과값은 두개의 교집합이 되는 c 가 들어있는 배열이 됩니다.
여기서 count($result) 를 하면, 교집합의 갯수가 표시되겠죠..
교집합의 갯수가 1보다 작으면 권한이 없으니 경고메세지 출력후 돌려보내기
교집합의 갯수가 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() 를 써서 그룹 값을 체크하는게 더 바람직하겠네요
답변에 대한 댓글 1개
저는 초보라 감히 엄두가 안나네요.
댓글을 작성하려면 로그인이 필요합니다.
일단 그룹 접근은...
그룹 접근은...
// 그룹관리자 이상이라면 통과
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);
}
}
이렇게 되지요????
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
아무튼 답변 고맙습니다.
아무래도 더 고민하다가 의뢰해야 할 것 같네요.