CI 묻고 답하기

제목 session 만료 후 초기화면에 관한 질문
카테고리 CI 2, 3
글쓴이 미나리나물 작성시각 2017/08/29 11:02:38
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 14225   RSS

ci 책으로 게시판을 만들고 있는 학생입니다.

그런데 로그 아웃을 누르면 맨 처음 화면으로 정상적으로 로딩 되는데,

시간이 지나 세션이 스스로 만료되면 주소가 이상하게 나옵니다.

제가 사용하는 테스트 주소는

http://192.168.10.10/auth

인데, 로그 아웃 클릭 시 저 주소로 정상 도달 합니다만,

자동 만료되면 주소가

http://192.168.10.10/auth/auth

로 나타납니다. 이 설정은 어디서 바꿔 줄 수 있는지요?

 다음글 검색기능시에 url은 변경되지만, 검색한 조건에 있는 ... (3)
 이전글 input에서 사용하는 get()과 db에서 사용하는 ... (6)

댓글

변종원(웅파) / 2017/08/29 11:23:39 / 추천 0
컨트롤러와 config.php 파일의 $config['base_url'] 부분 올려주세요
미나리나물 / 2017/08/29 11:29:53 / 추천 0

$config['base_url'] = '';

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
* 사용자 인증 컨트롤러
**/
class Auth extends CI_Controller {

  function __construct() {
    parent::__construct();
    $this -> load -> model('auth_m');
    $this -> load -> helper('form');
    $this -> load -> helper(array('url', 'date'));
    $this -> load -> helper('url');
  }

  public function index() {
    $this -> login();
  }

  /**
  * 로그인 처리
  **/
  public function login() {
    $this -> load -> library('form_validation');
    $this -> load -> helper('alert');
    $this -> form_validation -> set_rules('username', '아이디', 'required|alpha_numeric');
    $this -> form_validation -> set_rules('password', '비밀번호', 'required');

    echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />';

    if ($this -> form_validation -> run() == TRUE) {
      $auth_data = array(
        'username' => $this -> input -> post('username', TRUE),
        'password' => $this -> input -> post('password', TRUE),
      );

      $result = $this -> auth_m -> login($auth_data);

      if ($result) {
        $newdata = array(
          'username' => $result -> username,
          'userlevel' => $result -> userlevel,
          'logged_in' => TRUE
        );

        $this -> session -> set_userdata($newdata);

        // $this -> load -> view('main/main_v');
        redirect("/main/domain_w",'refresh');
      } else {
        alert('아이디 또는 비밀번호를 확인 해 주세요.', '/auth');
        exit;
      }
    } else {
      $this -> load -> view('auth/login_v');
    }
  }

  public function logout() {
    $this -> load -> helper('alert');
    $this -> session -> sess_destroy();

    echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />';
    alert('로그아웃 되었습니다.', '/auth');
    exit;
  }
}

?>

 

변종원(웅파) / 2017/08/29 14:41:47 / 추천 0

로그인 체크하는 부분은 어떻게 되어 있을까요?

세션이 없으면 로그인 주소로 리다이렉트 할텐데 거기가 문제일거 같네요.

미나리나물 / 2017/08/29 15:37:49 / 추천 0
세션이 없어질 때 설정 부분은 어디에서 찾을 수 있을까요?
변종원(웅파) / 2017/08/29 15:43:06 / 추천 0
미나리나물/ 지금 책이 없어서 정확한 답변은 힘들지만 board 컨트롤러의 remap이나 write 메소드에 로그인 체크하는 부분이 있을 겁니다.
미나리나물 / 2017/08/29 17:52:18 / 추천 0

현재 몸통은 아래와 같습니다.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Main extends CI_Controller {

  function __construct() {
  parent::__construct();
  $this -> load -> database();
  $this -> load -> model('main_m');
  $this -> load -> helper(array('url', 'date'));
  $this -> load -> helper('url');
  $this -> load -> helper('alert');
  }

	public function index()
	{
		$this->load->view('main/domain_w');
	}

  public function _remap($method)
  {
    $this -> load -> view('header_v');
    if ( $this -> session -> userdata('userlevel') == "0" ) {
      $this -> load -> view('nav_admin_v.php');
    } else {
      $this -> load -> view('nav_user_v.php');
    }
    if (method_exists($this, $method)) {
      $this -> {"{$method}"}();
    }
    $this -> load -> view('footer_v');
  }

  public function domain_w() {
    $this -> load -> view('main/main_v');
  }


}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */

 

미나리나물 / 2017/08/29 17:55:23 / 추천 0

크아아아압!!

찾았습니다. 헤더에 있는 아래 부분이 문제 였습니다.

<?php if (@$this -> session -> userdata('logged_in') == TRUE) { ?>
	            <div class="hdiv logout"><h3><?php echo $this -> session -> userdata('username'); ?></h3><span>님 환영합니다.</span><a href="/auth/logout" class="btn btn-info">로그 아웃</a></div>
			<?php
			} else {
				redirect("/auth",'refresh');
			}?>

여기서 redirect 부분에 "/auth"를 "/"로 바꾸니 정상 동작 합니다.