묻고답하기
일반 php문서 비회원 접근 막기
2016.08.10 14:27
도저히 해결을 못해서 이렇게 질문 올립니다.
곧바로 설명을 드리면 일단 FTP접속을 해서 폴더로 들어가면
XE폴더와 그외 기타 php페이지들이 모여있는 "page" 폴더가 있습니다.
XE폴더는 문제없이 잘 활용을 하고 있는데요..
XE폴더와 같은 레벨에 있는 "page" 폴더가 문제입니다.
page폴더에 있는 문서들에 비회원은 접근금지를 하고 싶은데요..
꼭 로그인까지는 아니더라도 다이렉트로 URL을 쓰고 들어올때 권한이 없다는 메세지등을 통해 접근방지라도 하고 싶은데요..
예전 제로보드4 시절에는 php 페이지 상단에
<?
$_zb_path="경로";
$_zb_url = "경로";
include "경로/lib.php";
if(!$connect) $connect = dbconn();
if(!$member) $member = member_info();
if($member[level]>9) Error("비회원님께서는 접근하실수 없습니다.");
?>
라고만 넣어도 접근금지를 할수가 있었는데요..
XE는 완전히 개념자체가 바뀌었다는것도 알겠고, 그래서 페이지를 생성할수 있는 세가지 방법
"문서페이지" 와 "위젯페이지", "외부페이지" 모두 시도를 해보았지만, 원하는 결과를 얻을수가 없었습니다.
3주간 검색하면서
<?php
define('__ZBXE__', true);
define('__XE__', true);
require_once('./config/config.inc.php');
$oContext = &Context::getInstance();
$oContext->init();
?>
라는 방법과 이와 유사한 몇가지방법들을 찾아서 모두 시도를 해보았는데 구현이 안되더군요.. ㅠ.ㅠ
(config.inc.php의 경로를 제대로 잡으면 페이지는 잘 뜨는데요.. 로그인연동은 안됩니다)
간단히 정리하면,
XE폴더말고 그 외부에 있는 폴더에 들어있는 php파일에 XE회원연동을 하여
비회원이 다이렉트 URL로 접근할 경우, 권한이 없습니다. 하는 정도의 접근금지만 해주면 되는건데요..
방법이 없을까요?
부디 가볍게 지나치지 마시고, 작은 팁이라도 부탁드립니다. ㅠ.ㅠ
(대략 3주간 죽어라 검색하고 적용하고 해봐도 도무지 방법을 찾지못해 어쩔줄 몰라하고 있네요..)
XE버전은 1.8.22 버전을 사용해보고 있습니다.
댓글 4
-
라자루스
2016.08.10 15:18
-
JINJINLIFE
2016.08.10 17:54
아.. 먼저 답변에 대해 너무너무 감사드려요..
그런데 말씀해주신
$logged_info
= Context::get(
'logged_info'
);
if
(!
$logged_info
){
실행할 소스
}
$oContext
->close();
이부분만 추가하면 잘뜨던 페이지가 뜨질 않아서요.. 페이지를 찾을수 없다고 나오는건 어떤 이유일까요?? ㅠ.ㅠ -
라자루스
2016.08.10 23:58
실행할 소스를 적절히 넣으셨죠? 그래도 안 된다면 이 글 확인해 보세요. https://www.xpressengine.com/tip/17536608 -
JINJINLIFE
2016.08.11 07:48
정말 자기일처럼 신경써주신 라자루스님께 진심으로 깊은 감사를 드려요..
많은 팁들을 조합하다보니 사소한 한부분씩 틀려서 정답을 못찾고 있었는데.. 정말 결정적인 힌트를 주셨네요..
잘 해결했습니다. 정말 그 많은 시간들에 대한 보상을 해주셔서 뭐라 감사드려야할지 모르겠네요..
감사합니다~ 꿉뻑~
3주간 검색하면서 나왔다는 부분에서 $logged_info = Context::get('logged_info');를 마지막에 추가해 주셔야 로그인 연동이 됩니다. 그 뒤에 if(!$logged_info){ ~~~ }로 하면 비회원일 경우 조건문을 실행하도록 할 수 있습니다. 그리고 마지막엔 $oContext->close();를 추가해 주셔야 합니다.
대충 아래와 같은 형태가 되겠네요.