그누보드 공부중인데 이해가 안되서요. 도와주세요~
본문
그누보드 처음 설치 후 Theme -> basic -> index.php 들어가면
<?php
define('_INDEX_', true);
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if (G5_IS_MOBILE) {
include_once(G5_THEME_MOBILE_PATH.'/index.php');
return;
}
include_once(G5_THEME_PATH.'/head.php');
?>
이렇게 작성 되어 있는데
define('_INDEX_', true);
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
여기서 if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
아래 설명대로라면 이 문구를 삭제 하면 개별 페이지에 접근시 종료가 되야 하는것 아닌가요???
그런데 종료가 안되고 정상적으로 화면이 나와서요...
개별 페이지 접근 불가
_GNUBOARD_
상수는 config.php:11에 정의되어 있으며, 이 상수가 정의되어 있지 않다면 즉, 개별 페이지에 접근하면 바로 종료된다.
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
출처 : https://webdir.tistory.com/444
개별페이지 접근 못하게 하는게 위 방법으로 하는게 아니라면
그누보드에서는 개별페이지 접근을 어떻게 막는건가요???
답변 3
개별페이지 접근 불가라는것은
해당 php파일 경로를 직접 입력했을때 해당 php파일이 실행이 되지 않게 하는 구문입니다.
테마 적용후 index.php 접속하면 접속이 되지만
/theme/baisc/index.php로 직접 주소를 쳐서 들어갔을땐 안들어가진다는 뜻입니다.
질문이 이해하기 어려워서 의도하신 질문이 무엇인지 잘 모르겠지만
해당 구문을 제거한다고 테마 적용 후 접속시 바뀌는것은 없습니다.
include된 파일의 직접적인 주소 접근을 막기 위한 구문이며 해당 구문이 있어야 외부에서 직접 해당페이지에 접근했을 때 실행이 되지 않습니다
'개별 페이지 접근 불가' 의 의미는 해당 물리적 경로로 URL 접근시 페이지가 종료된다는 의미입니다.
주소창에 ~/theme/basic/index.php 로 접속하면
if (!defined('_GNUBOARD_')) exit;
로 인해 페이지에 아무것도 나오지 않게 됩니다.
~/index.php 로 접속하면.. 여러 단계/과정을 거쳐 (테마 사용시에는) /theme/basic/index.php 파일의 내용이 처리되는 것입니다.
비슷한 케이스로 /skin/board/basic/list.skin.php 도,
주소창에서 ~/skin/board/basic/list.skin.php 를 접속하면 페이지에 아무것도 나오지 않게 됩니다.
이러한 처리의 목적은 '보안' 성격입니다.
개별 페이지 접근 불가 구문을 없애고 ~/theme/basic/index.php로 접속했는데
<----
include_once(G5_THEME_PATH.'/head.php'); 행에서 에러가 발생하여 그 아래는 더 이상 실행 안되는 것입니다
에러 메세지를 출력되게 상단에 코드를 넣어서 해보면 이유를 알 수 있습니다
error_reporting(E_ALL & ~E_NOTICE);
ini_set("display_errors", 1);