테스트 사이트 - 개발 중인 베타 버전입니다

방문자가 임의로 실행할 수 없도록 페이지를 만들 때 채택완료

link.php가 있잖아요.

그 페이지를 방문자가

 

http://도메인/bbs/link.php...

 

이렇게 실행시키지 못하도록 하는, 일종의 접근을 금지시하는 기능을 어디선가 본 것 같은데 기억이 나지 않네요.

php 안의 첫줄에 무언가 삽입하는 것으로 알고 있는데요...

 

게시판이 실행하는 과정에서 불러들일 수는 있지만, 회원이 이 파일만 실행은 시키지 못하게 하는 방법요...

 

 

아 눈도 적당히 내렸는데...

좋은 하루되세요.

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

요거 말씀이신가요??? 이건 스킨파일에서 사용되는 거고..

 

따로 파라미터를 받으실텐데..

그 값을 db에서 조회해서 값이 없으면 중지시키는 쪽으로 진행하셔야 할것 같습니다.

 

예를들어

bbs/board.php 의 경우

 

if (!$board['bo_table']) {    alert('존재하지 않는 게시판입니다.', G5_URL); }

 

이런 흐름으로요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 6개

먼저 말슴해주신 부분이 아주 좋은 힌트가 되었습니다. 감사합니다.
그런데 이 페이지를 board.php내에서 실행했을 때도 링크는 보여주지만 해당 링크를 클릭하면 해당 페이지로 가지 않고 null 로 나타나네요 ㅠㅠ

if (!defined('_GNUBOARD_')) exit;
이 부분이 미안하지만 개별페이지일때만 null 값을 주는 것이 맞는지요.
단독실행 때는 확실히 null 값을 주는 것은 확인했습니다.

다시한번 답변 감사드립니다.
if (!defined('_GNUBOARD_')) exit;
이거는 말씀드렸다시피 스킨파일에 사용됩니다.

_GNUBOARD_ 라는 상수는 common.php에 있는데
스킨파일 별개에는 common.php을 인클루드 하지 않기때문에

도메인/skin/write.php 이런식으로 접근햇을때 common.php이 없어서 막히는것이구요..

다시 보니까
link.php에서
$_SERVER["HTTP_REFERER"]을 이용하는 방법도 있겠습니다.

주소를 복사해서 들어오는것을 방지하시는것이라면..

$_SERVER["HTTP_REFERER"]에 도메인이나, 도메인/bbs/baord.php이 있는지 체크하시고
없다면 게시판이 아닌, 다른방법으로 접근한것 이므로 여기에서 실행안되게 처리를 하면 될것같은데요..



저라면 이런 흐름으로 작업할것 같네요~ 참고되시길..
아래 두번째 답변이 저의 의중을 꿰뚫고 계셔서 정말 감사합니다.
그런데 제가 초보라서...

그러면 common.php를 인클류드 하면 될까요?

또는

abc.com이라고 하면 명령어 $_SERVER["HTTP_REFERER"] 가 제가 써보지 않은 명령어라서 그러는데요. bbs/board.php 에서 실행한 것이 아니면 널값을 주게끔하려면 어떤 코드를 포함해야할까요?

수준이 부족한 질문이라 미안합니다.. ㅠㅠ
link.php 에서
exit($_SERVER["HTTP_REFERER"]);
찍어보시고 실행해보세요
아 안타깝게도 null 값주고 그냥 빠져나가버렸어요.
제가 해당코드 위치를 너무 위에 준건가요?
조나단 님의 방법이 옳았습니다.
엄지척입니다.
오늘 조나단님의 말씀을 인용하여 다시 해보니 되었습니다.
대신에 해당 게시판에 관리자외 글쓰기 기능을 없애야 할 것 같습니다.
댓글쓰기 기능도 없애야 할까봐요.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고