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

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

QA

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

답변 2

본문

그누보드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의 코드도 학습해 보려고 해 보았는데,
코드 에러가 뜹니다.

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

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

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 98
© SIRSOFT
현재 페이지 제일 처음으로