특정 회원만 접근 가능한 게시판을 만들려고 합니다. 조언 부탁드립니다.

특정 회원만 접근 가능한 게시판을 만들려고 합니다. 조언 부탁드립니다.

QA

특정 회원만 접근 가능한 게시판을 만들려고 합니다. 조언 부탁드립니다.

본문

그누보드5 기본 테마인 BASIC 테마를 사용하고 있습니다.

 

관리자와 특정 회원만 볼 수 있는 게시판을 만들려고 합니다.

 

검색해 보니까,

list.skin.php 최상단에 아래의 코드를 추가하면 된다는 것을 알았습니다.

 


if ($is_admin && $member['mb_id'] != "abc") { // 아이디 abc와 괸리자만 접근 가능
    alert("접근할수 없습니다.");
    exit; //접근금지
}

 

 

그런데

skin/basic/ 폴더 안의 list.skin.php 에 위 코드를 삽입할 경우,

전체 게시판에 적용되는 것으로 알고 있습니다.

 

 

특정 회원을 위한 게시판을 만들어서

그 게시판에는 관리자와 지정한 회원만 접근이 가능하도록 하려면,

어느 폴더의 list.skin.php를 수정해야 하는지 조언 부탁드립니다.

이 질문에 댓글 쓰기 :

답변 2

if($bo_table == "free") { 이렇게 조건문을 위에다가 한번 감싸주세요

 

안녕하세요^^


if ($bo_table == "free") {
   if ($is_admin && $member['mb_id'] != "abc") { // 아이디 abc와 괸리자만 접근 가능
       alert("접근할수 없습니다.");
       exit; //접근금지
   }
}

if ($bo_table == "free1") {
   if ($is_admin && $member['mb_id'] != "def") { // 아이디 def와 괸리자만 접근 가능
       alert("접근할수 없습니다.");
       exit; //접근금지
   }
}


이런 식으로 순서대로 나열하면 될까요?

게시판 한 개당 회원 한 명에게 배정하려고 해서 따로 따로 하는 게 맞는 것 같습니다.

말씀해 주신 것처럼


if ($bo_table == "free") {
   if (!$is_admin && $member['mb_id'] != "abc") { // 아이디 abc와 괸리자만 접근 가능
       alert("접근할수 없습니다.");
       exit; //접근금지
   }
}

if ($bo_table == "free1") {
   if (!$is_admin && $member['mb_id'] != "def") { // 아이디 def와 괸리자만 접근 가능
       alert("접근할수 없습니다.");
       exit; //접근금지
   }
}


이렇게 적용하니까 되는 것 같습니다^^


혹시 게시판에 접근 아이디를 추가하려고 할 경우에는
 if (!$is_admin && $member['mb_id'] != "abc, def") {
이런 식으로 하면 될까요?

회원 한 명 한 명에게 각각 본인의 게시판을 배정해 준 후에

'회원 본인'과 '관리자' 그리고 '부관리자'만 접근이 가능하게 하려고 해서
처음 알려 주신 방법으로 코드를 작성해야 하는 것 같습니다.

예를 들어,
회원 abc에게 free라는 게시판을 만들어 준 후에,
free라는 게시판에 '관리자(admin)'와 '부관리자(def)' 그리고 '회원(abc)'만 접속이 가능하게 하는 것입니다.

댓글 답변에서 제시해 주신 코드처럼
아이디를 따옴표로 묶어서 콤마로 나열해 주면 되겠네요.


if ($bo_table == "free") {
   if (!$is_admin && $member['mb_id'] != "abc","def") { // abc와 def 그리고 관리자만 접근 가능
       alert("접근할수 없습니다.");
       exit; //접근금지
   }
}


이런 식으로요.

아이디 추가하는 것은 아직 적용해 보지는 못했는데, 잘될 것 같네요^^

귀찮으실텐데, 끝까지 답변해 주셔서 감사드립니다.

if ($bo_table == "free") {
  if ($is_admin && in_array($member['mb_id'], ["abc","def"])) { // abc와 def 그리고 관리자만 접근 가능
      alert("접근할수 없습니다.");
      exit; //접근금지
  }
}

이렇게 해야되요 in_array로 해서 첫인자는 문자열이고 두번째 인자는 배열이고 비교대상 입니다.

$is_admin 이 관리자 이구요
if($is_admin || in_array($member['mb_id'], ["abc","def"]) || $board['bo_admin'] == "부관리자") {
  alert("접근할수 없습니다.");
  exit; //접근금지
}
이거에요 일단 테스트 해보세요

아... 무조건 나열하는 게 아니군요... 창피하네요;;;
in_array에 대해 찾아보고 공부 좀 해야겠습니다.

알려주셔서 감사합니다^^

아, 그리고 참고로... 부관리자라기보다는... 특정 아이디를 추가로 하나 더 지정해서 해당 게시판 글을 볼 수 있도록 하려고 하는 것입니다.

그리고
  if ($is_admin && in_array($member['mb_id'], ["abc","def"])) { 이 아니라,
  if (!$is_admin && in_array($member['mb_id'], ["abc","def"])) { 이렇게 해야
관리자와 abc 그리고 def를 제외한 아이디는 접근 금지 아닌가요?


항상 리오닥터님 덕분에 문제를 해결하고 조금씩 배워나갑니다. 감사합니다.

저도 무언가 도움을 드리고 싶지만,
PHP 쪽으로는 제가 뭘 해 드릴 수 있는 입장은 아니고... ^^;;

나중에라도 혹시 근골격계 질환 관련해서
정보가 필요하신 경우 있으시면 쪽지 주세요.

근골격계 관련해서 보건의료인 교육을 하고 있습니다.

근골격계 질환 치료에 대한 것부터,
질환이 아니더라도 운동역학 등 필요한 부분이 있다면,
이런 부분에서는 조언해 드릴 수 있습니다^^


if ($bo_table == "free") {
	if (!$is_admin && in_array($member['mb_id'], ["abd","def"])) { // 회원 아이디와 관리자만 접근 가능
		alert("본인만 접근할 수 있습니다.");
		exit; //접근금지
	}
}


위와 같이 적용해 보니까 오류가 발생하네요.

if (!$is_admin && in_array($member['mb_id'], ["abd","def"])) {  여기에 오류가 있다고 나옵니다.

그러시는군요~ 근데 어떻게 해서 관련 없는 전공일을 하시는지 여쭤볼수있을까요? ㅋㅋ
그리고 관리자가 아니면 !$is_admin 이게 관리자 가 아니다 라는 말이구요
$is_admin 만 있으면 관리자를 포함하는거죠

그리고 in_array($member['mb_id'], ["abd","def"]) 이거는 현재 회원 배열이 대상자 오른쪽에 있는 인자 배열이구요
그러면 abd 회원이나, def 회원 (즉 아이디) 를 가르킵니다.

그러면 이게 정답일거 같아요
if($is_admin && in_array($member['mb_id'], ["abd","def"])) {
      alert("접근할수 없습니다.");
      exit;
}

여기서 관리자가 아니면 $is_member 회원이면 변수로 사용하면 되구요

https://sir.kr/qa/505670
위 링크 댓글을 보고 학습했었는데 조금 헷갈리네요 ^^;;

if($is_admin && in_array($member['mb_id'], ["abd","def"])) {
      alert("접근할수 없습니다.");
      exit;
}

위 내용처럼 하면 admin과 abd 그리고 def는 접근할 수 없다는 것이 아닌가요?

!가 들어가야 admin과 abd 그리고 def를 제외하고는 접근할 수 없다는 것이고요.


그런데 !를 넣어도 빼도 오류가 나네요 ㅜㅠ

if($is_admin && in_array($member['mb_id'], ["abd","def"])) { 에 문제가 있다고 에러가 뜹니다.

네 회원 아이디를 넣었습니다.

Parse error: syntax error, unexpected '[' in g5/skin/board/basic/list.skin.php on line 5

5번째 라인은 아래 코드입니다.

if($is_admin && in_array($member['mb_id'], ["abd","def"])) { // 회원 아이디와 관리자만 접근 가능

아! php 버전이 낮아서 그런가봐요 ㅋㅋㅋ 보통 7이나 8을 사용하는데
if($is_admin && in_array($member['mb_id'], array("abd","def"))) { // 회원 아이디와 관리자만 접근 가능
이렇게 해보세요 보통 [] 으로 하는데 버전이 낮으면 array() 로 하면되요

아... 그러네요...
저번에도 php 버전 때문에 한참 애먹다가 결국 알고 보니 버전 문제였는데;;;
웹호스팅을 옮기던지 해야되나...

이제 오류는 나오지 않는데,
관리자와 지정된 아이디만 접근이 가능한 게 아니라,
다른 아이디(비회원)도 접근이 가능합니다.

일단 특정 회원 아이디 한 개와 관리자만 접속이 가능한 것까지는 성공은 해서
기분이 좋네요^^ㅎㅎ

in_array, array 에 대해서 좀 더 학습해 보고
다시 시도해서 아이디 추가하는 것도 다시 도전해 봐야겠습니다.

도와주셔서 감사합니다^^

그리고 저는 이쪽 전공은 아니지만
어릴 적부터 html이랑 플래시로 사이트를 이렇게 저렇게 만들며
재미를 붙였었어요.

그 당시에는 직접 서버도 구축해 보겠다고
아무것도 모르면서 아마존 서버케이스 큰 것도 구입하고 그랬었는데... ㅎㅎ

전공은 다른 쪽으로 갔지만,
늦었지만 조금씩 공부하고 있습니다^^


// 게시판 그리고 아이디 입력하세요
$allowed_ids = [
    "free" => "abc",
    "free1" => "def"
];
 
if (isset($allowed_ids[$bo_table])) {
    if ($is_admin && $member['mb_id'] != $allowed_ids[$bo_table]) {
        alert("접근할수 없습니다.");
        exit; // 접근금지
    }
}
 

답변 감사합니다.
먼저 답변 주신 회원님의 조언으로 해결하였습니다.

미니님a의 코드도 학습해 보려고 해 보았는데,
코드 에러가 뜹니다.

아마도 제가 코드를 입력하는 과정에서 오류가 있는 것 같습니다.
학습해 보도록 하겠습니다.

답변 주셔서 감사드립니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 1

회원로그인

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