CI 묻고 답하기

제목 세션에 자꾸 눌값이 들어갑니다..
글쓴이 초보러 작성시각 2014/10/31 21:22:57
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 16631   RSS
저번에 질문했지만 적절한 해결책을 얻지 못해 다시 여쭤보려고 합니다... 이번엔 코드까지 자세하게 올려 도움을 구하고자 하는점 양해부탁드립니다!
먼저 문제는 var_dump($this->session->all_userdata()); 코드를 이용해 세션값을 조회 해보면
  •  ["session_id"]=> string(32) "71017c39a2e78d0ec2c6c07bafe4e918" ["ip_address"]=> string(13) "xxx.xxx.x.xxx" ["user_agent"]=> string(120) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.3" ["last_activity"]=> int(1414758247) ["user_data"]=> string(0) "" 
이런식으로 자꾸 user_data에만 값이 비게됩니다.
먼저 로그인 하는 부분의 코드를 보여 드리자면
(application/controllers/login.php)
class Login extends CI_Controller {
  function index(){
    $this->load->model('Join_model');
    $this->load->view('head');
    if($this->input->post('id')){
      $data = $this->Join_model->gets(array(
        'table'=>'acc_wait_tb',
        'id'=>$this->input->post('id'),
        'password'=>$this->input->post('password'),
      ));
      if($data == true){
        $data = $this->Join_model->get_session($this->input->post('id'));
        $dd = $this->db->get_where('acc_wait_tb', array('id'=>$this->input->post('id')))->row();
        $new_data = array(
          'user_id'=>$dd->id,
          'name'=>$dd->name,
          'email'=>$dd->email,
        );
        $this->session->set_userdata($new_data);
        echo "<script>
        location.href='/index.php/main';
        </script>";
      }else if($data == false){
        echo "<script>alert('로그인 정보가 일치하지 않습니다.');</script>";
        $this->load->view('log_main');
        $this->load->view('footer');
      }
    }else{
      $this->load->view('log_main');
      $this->load->view('footer');
    }
  }
}

입니다. 여기서 데이터베이스에서 정보를 비교해 정보가 일치할 경우 set_userdata($new_data);를 이용해 세션을 설정합니다.
그리고 난 다음 다른 페이지로 넘어가 세션을 조회해보면 위와 같이 user_data 에 눌값이 들어갑니다. 덤프를 떠본 곳의 코드는(application/views/nav.php)
<?php var_dump($this->session->all_userdata());
 $user_id = $this->session->userdata('user_id');?>
<?php if($user_id != ""): ?>
<p class="navbar-text pull-right" style="margin-right:30px;">안녕하세요.
  <a class="navbar-link" href=""><?=$this->session->userdata('name')?></a> 님
</p>
<?endif;?>


입니다. 
어느곳에서 잘못이 있는지 감을 잡을수가 없네요.. 부탁드립니다...!
 다음글 마냐님 보드 세팅방법 아시는분.. (2)
 이전글 ci에서 지원하는 라이브러리중에 upload 라이브러리... (1)

댓글

taegon / 2014/11/01 18:40:30 / 추천 0
쿼리 시에 데이터가 정상적으로 넘어오시나요?
$dd = $this->db->get_where('acc_wait_tb', array('id'=>$this->input->post('id')))->row();
이 부분에서 db가 아니라 Join_model이 아니신지? 먼저 쿼리해오는 데이터가 정상적으로 리턴 되는지를 확인해 보시고 세션에 넣어보세요.
어쟀든 CI 세션이 생성되었다면 쿠기가 정상적으로 쓸 수 있다는 이야기이니 array 형태로 넣지 마시고 

$this->session->set_userdata("login_id", "test"); 형태로 하나하나 넣어보세요~
그리고 출력하셔서 확인해보시면 문제점을 잡으실 수 있을 것 같습니다.
 
초보러 / 2014/11/01 21:32:46 / 추천 0
taegon // 답변 감사합니다^^. 네 get_where은 코드이그나이터 자체에서 지원해주는 메소드라 db가 맞습니다. 일단 하나하나 넣어보겠습니다. 다른방식으로 접근하게 해주셔서 감사합니다!
확인 해봤는데 set_userdata('user_id','data'); 하고 덤프를 떠봤는데도 bool(false) 로 나타납니다.. 어디가 어떻게 잘못된 걸까요?...