외부 로그인후 페이지 이동방법 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

외부 로그인후 페이지 이동방법 정보

외부 로그인후 페이지 이동방법

본문

우선 만들 홈피가 비공개입니다. 메인페이지 자체도 아예 보여지면 안되구요.
일단 회원이 가입을 하면 회원이 들어와야 될 회원인지 관리자가 확인후 승인을 하면
그때부터 로그인 해서 메인페이지 접근이 되야 합니다.

일단 승인쪽 항목은 레벨업으로 해결한다 치구요...

일단 첫 화면에 달랑 로그인 화면만 있구요. 이사람이 가입을 하고 승인이 안되 있는경우에
로그인 했을때는
(레벨1이라고 가정)  승인을 기달려 달라.php  로 가고

승인을 해서 (레벨2로 가정) 들어와야 할 경우는 달랑 로그인 화면에서 로그인을 하면
메인.php 화면으로 이동하게 하고 싶습니다..

근데 이런 비슷한 활용팁이 어디에도 없어서 문의 드립니다. 
꼭 아시는 고수님들 도움 부탁 드립니다.~~ (php 문외한이니 자세한 설명 부탁 드립니다^^)


현재 테스트 하는 페이지에는


<?
include_once("./_common.php");
include_once("$g4[path]/lib/latest.lib.php");
$g4['title'] = "";
include_once("$g4[path]/head.sub.php");
include_once("$g4[path]/lib/outlogin.lib.php");

?>

<?=outlogin("basic"); // 외부 로그인 ?>

요거로 달랑 외부로그인이 떠있는 상태입니다.

  • 복사

댓글 전체

_common.php 아래와 같이 작성 하신 후 테스트 해 보세요.

<?
$g4_path = "."; // common.php 의 상대 경로
include_once("$g4_path/common.php");

if(!$member[mb_id]){
goto_url("$g4[path]/bbs/login.php");
  exit;
}
?>
위에 주신 예제는 그누보드 첫 화면이 로그인 페이지가 나오는 화면으로 가는 것인데요..
이거는 제가 위에 설명 한것과 관련이 없네요... 이 사람이 레벨이 1임에도 불구하고 로그인 후는
그냥 메인 페이지가 떠버리거든요...(승인이 안된사람인데도 메인으로 가버림)

이게 아니라 처음 페이지는 test.php(달랑 로그인창만 있음-아웃로그인으로)
거기서 로그인을 하면  레벨에 따라 승인 안된 레벨은  기달려.php 로 가고
승인된 레벨은 메인.php 로 가게 해야 하거든요...
skin/member/스킨폴더/login_check.skin.php 에

// 자신만의 코드를 넣어 주세요.
// 레벨별 이동
if ($mb[mb_level] == 1) {
        goto_url("./승인대기페이지.php");
  } else {
        goto_url("./승인완료페이지.php");
}

위 내용 반영 후
조건이나 페이지 경로는 추가 변경 해 보면서 테스트 해 보세요.
테스트를 해봤는데요...
그렇게 하니까 원하는 페이지로 이동은 하는데 분명 로그인을 하고 이동을 하는데
이동후 로그인이 안된 상태 이네요. 그래서  커몬 파일에서 로그인 안된녀석들은 로그인 페이지떠가
무한 반복 으로 나오는군요...
근데 레벨별로 나누어져서 해당 페이지로 이동은 분명 합니다...
단 )  로그인을 했는데 로그인을 안한상태로 이동이 됩니다.
사노라가노라님  되었습니다.~~ 
그 방법으로 하니 로그인 한 상태로 원하는 페이지 이동이 됩니다...

근데 한가지 문제가... 레벨1의 승인이 안된사람이 만약 이동을
../no.php 로 했다면 그 페이지로 이동 해서 넌 승인이 안되써 하고 메인의 최근게시물도 못보게
되는데요 그상태에서 그 본인이 직접 주소를 알아내서 치면 예를 들어
http://도메인/그누보드/index.php  이런식으로 승인 안된 페이지에서 로그인 한 상태로 치면
최근 게시물이 나오는 인덱스 페이지가 보여지게 됩니다.
(물론 게시판 자체 접근은 레벨을 막아놔서 안보이지만 인덱스의 최근 게시물 목록은 다 보이게 되네요)

이부분도 막아야 하는데  쉽게 말해서 승인이 안된 레벨1의 사람은
임의로 주소를 알아내서 치더라도 최근 게시물조차 못보게 인덱스 페이지에 레벨이 안된사람은 접근을
금지 해야 하는데요...

머 간단히 표현하면 레벨별로 임의 페이지 접근 막기를 어케 해야 하는냐는 질문입니다.^^
head.sub.php 끝부분에..

if (!$member || $member[mb_level]<=1) {  //회원이 아니거나 레벨이 1미만일때

  //게시판이거나, 메인일때는 /no.php 로 가버려..
  if ($bo_table||$PHP_SELF=='/'||$PHP_SELF=='/index.php') {
      goto_url("/no.php");
  }
}
하심될껍니다.^^
음.....  로빈아빠님  테스트 해보니 아무런 효과가 없네요^^  알려주신대로 코드 넣고 했는데
레벨1 사용자가
http://도메인/그누보드/index.php  하면 그대로 최신 글 나와버리네요

코드는 맨아래도 넣어보고 중간에도 넣어봤는데요...
같네요...
<?
// 레벨별 회원 차단
if (!$member || $member[mb_level]<=1) {  //회원이 아니거나 레벨이 1미만일때

  //게시판이거나, 메인일때는 /no.php 로 가버려..
  if ($bo_table||$PHP_SELF=='/'||$PHP_SELF=='/index.php') {
      goto_url("/no.php");
  }
}
?>

이렇게 넣었습니다.
주소를 직접 쳐도 못 들어오게 하는 게 맨 처음 내용 이었습니다.
현재 적용하신 상태에서 추가적으로

_common.php 아래와 같이 작성 하신 후 테스트 해 보세요
<?
$g4_path = "."; // common.php 의 상대 경로
include_once("$g4_path/common.php");

if(!$member[mb_id] || $member[mb_level] <= 1){
goto_url("$g4[path]/승인 전 안내 페이지");
  exit;
}
?>

다른 부분에 _common.php를 추가로 사용한 경우 직접 접근이 가능한 페이지 들이 생기기 때문에
해당 부분에도 위 소스 반영하시면 처리 될 겁니다.
한가지만 더 질문 드려도 될까요?  ㅡ.ㅡ 
일단 이런식으로 모든것을 다 막아서 보안적인 문제는 이제 없는데 
만약 누군가가 여기 그누보드에 올려진 파일의 경로를 알고 있다면 로그인 없이 바로 받아 지던데요
이걸 막는 법은 없는지요?

예를 들어 누군가가 로그인 없이 파일의 경로를 알아내서
http://도메인/그누보드/data/게시판명/파일이름.hwp  이런식으로 치면 그냥 바로 다운이 되더라구요..
이걸 막는법은 없을런지요?
data 폴더에 파일명이 _OcX8bLDT_EC9B8CEB939C3EAB889AED........... 이런식으로 처리되어 실제
게시판에 첨부명과 다른 처리가 되기 때문에 관련 문의나 기타 의견등이 없는 것으로 확인 됩니다.
해킹 수준이 아니라면 현재 상태로도 외부에서 파일명을 알아내기는 어렵지 않을까요?
관련 사항은 좀 더 찾아 봐야 겠습니다
htacess 를 이용하여 무조건 도메인.com으로 가는 것은

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^도메인\.com$  앞에 붙는 것 처리
RewriteRule (.*) http://무조건이동될 도메인/$1 [R=301,L]
</IfModule>
이렇게 사용하고 있습니다.

Rewrite 라는 것과 위htaccess 로 검색 후 첫번째 주소 부분에 경로까지 처리하면 가능할 것 같은데 연구 한 번 해 보세요. 저는 다른 작업 중이라 이후에 해 봐야겠습니다.
http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=351879&sca=&sfl=wr_subject&stx=Rewrite&sop=and
안녕하세요..
시골신선님께서 질문답변에 올리시고
사노라가노라님께서 답변주신것을 토대로
약간 변경하여 a로 로그인하면 게시판명 aaa로
이동하게끔 설정해놓았습니다.
----------------------
_common.php

// 레벨별 회원 차단
if (!$member[mb_id] <= a|| $member[mb_level]<=1) {  //회원이 아니거나 레벨이 1미만일때

  //게시판이거나, 메인일때는 /no.php 로 가버려..
  if ($bo_table||$PHP_SELF=='/'||$PHP_SELF=='/index.php') {
      goto_url("$g4_path/login.php");
  }
}

login_check_skin.php

// 자신만의 코드를 넣어주세요.
// 레벨별 이동
if ($mb[mb_id] == a) {
      $url = "/board/bbs/board.php?bo_table=aaa";
  } else if ($mb[mb_id] == b) {
      $url = "/board/bbs/board.php?bo_table=bbb";

  } else {
      $url = "/board/info_pre.php";
}

--------------------
근데 문제는
/bbs/board.php?bo_table=aaa
이렇게 직접 주소를 써넣으면
로그인이 안된상태에서는 게시판이 아니라
로그인창으로 이동해야 하는데
그게 안되더라구요.

고수님들이 가르침을 부탁드립니다 ^^
© SIRSOFT
현재 페이지 제일 처음으로