만들면서 배우는 CodeIgniter Q&A

제목 No direct script access allowed 오류 질문입니다.
글쓴이 수야디벨 작성시각 2013/08/01 22:27:17
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 22283   RSS
82페이지 따라하고 있는데 ,

url을 실행하면 No direct script access allowed 오류가납니다.
(정확히 말하면 에러는 아닌데 화면에 저 문구만 보입니다.)

소스는 아래와 같습니다.

*  board.php

 <?php if(defined('BASEPATH')) exit('No direct script access allowed');
/**
 * 게시판 메인 컨트롤러
 */
 
class Board extends CI_Controller{
function __construct()
{
parent::__construct();
 
$this->load->database();
$this->load->model('board_m');
}
/**
 * 주소에 메서드가 생략되엇을 때 실행되는 기본 메서드
 */  
     public function index()
{
$this->lists(); 
}
 
/**
 * 사이트 헤더, 푸터가 자동으로 추가된다.
 *
 */
     public function _remap($method)
{
// 헤더 include
$this->load->view('header_v');
if( method_exists($this, $method) )
{
$this->{"{$method}"}();
}
// 푸터 include
$this->load->view('footer_v');
}
 
/**
 * 목록 불러오기
 */
public function lists()
{
$data['list'] = $this->board_m->get_list($this->uri->segment(3));
$this->load->view('board/list_v',$data); 
}
}
/* End of file board.php */
/* Location: ./application/controllers/board.php */


그런데 , __construct() 함수 부분의

 $this->load->database();
$this->load->model('board_m'); 와

if(defined('BASEPATH')) exit('No direct script access allowed');


이것만 없애주면 , 'board_m' 모델이 로드 되지 않았다는 오류가 뜨긴뜨지만,

페이지엔 접근이 가능합니다. 

앞의 main 컨트롤러는 아무 문제 없이 잘 테스트 했었는데,

이건 왜 그러는걸까요?ㅠ



혹시 몰라서 board_m 의 소스도 남겨봅니다.

<?php if(defined('BASEPATH')) exit('No direct script access allowed');
 
/**
 * 공통 게시판 모델
 *
 */
class Board_m extends CI_Model
{
function __construct()
{
parent::__construct();
}
function get_list($table='ci_board')
{
$sql = "SELECT * FROM ".$table." ORDER BY board_id DESC";
$query = $this->db->query($sql);
$result = $query->result();
// $result = $query->result_array();
return $result;
}
}
 
/* End of file board_m.php */
/* Location: ./application/models/board_m.php */

 

 
 다음글 오탈자인지 제가 잘못하고 있는건지 .. (2)
 이전글 오탈자는 아닌데 .. (1)

댓글

변종원(웅파) / 2013/08/01 23:15:14 / 추천 0
접속 주소를 어떻게 하셨는데요? ^^

83페이지 1번에 이유가 설명되어 있습니다.
수야디벨 / 2013/08/02 09:52:28 / 추천 0
 이상하네요 .. 전 주소를 직접 입력하지 않거든요 ㅠ

URL은 http://[ip]:[port] / 컨트롤러 이름  or  URL은 http://[ip]:[port] / 컨트롤러이름/함수명 

이런식으로 실행합니다 .

즉, URL은 http://[ip]:[port] /board  or URL은 http://[ip]:[port] /board/index 

이렇게 실행한다는 이야기인데,

그래도 저렇게 나옵니다 ㅠ

근데 , 이상한건 todo 프로젝트당시 main은 아무런 이상없이 잘 된다는건데 ..

일단 글은 적어 놓고 저도 제 나름대로 왜 그런지 한번 찾아보겠습니다만


그 define('BASEPATH') 할때 이 BASEPATH를 어디서 설정하는건가요?

이 경로가 뭘로 찍히나 확인하고 싶은데 찍을수 있는 방법이 있을까요?


PS.그리고 전 책처럼 매 프로젝트 마다 새롭게 CI를 설치하는게 아니라,

그냥 CI 하나에 컨트롤러추가해서 사용하고 있거든요

그래서 controller 폴더에  board.php 와 main.php( Todo프로젝트용) 두개가 다 있는데,

이 때, main은 http://[ip]:[port] /main 으로 잘 실행이 되나 http://[ip]:[port] /board 는 에러문구가 나온다는거고,

또한 , main의 안쪽 소스만 (컨트롤 명 빼고) 복사해서 board에 붙여 넣기 해봤는데,

그래도 board는 안되네요 ..;; ?? 정말 이해할수 없는 현상입니다 .

컨트롤러 이름만 다르고 내용은 main이랑 똑같이 붙여 넣으면 될줄알았는데,

어쩌면 소스문제가 아닌걸까요?
수야디벨 / 2013/08/02 10:08:45 / 추천 0
 아~ 

왜인지 드디어 찾아 냈습니다 ;;

로드되는 모델 부분에서 

if(!defined('BASEPATH')) exit('No direct script access allowed'); 이부분이

if(defined('BASEPATH')) exit('No direct script access allowed'); 이렇게 되어 있었네요 ..

아나 ..ㅋㅋㅋ 소스를 직접 손으로 치다보니 이런 오류가 ..

왠지 허무한 느낌입니다 ㅠ 웅파님 답변감사합니다 ~