2014-08-30 5 views
0

model에서 몇 가지 쿼리를 실행하여 사용자가 유효한지 특정 데이터를 저장하면 인증합니다. 한 검색어의 데이터는 저장할 수 있지만 다른 검색어는 저장할 수 없습니다. 여기 login controllerCodeigniter 세션 라이브러리에 배열 데이터가 저장되지 않음

컨트롤러

if ($user['authenticated']) { 

       //Start session 
       $this->load->library('session'); 

       $newdata = array(
        'user' => $user['data'], 
        'userPermissions'=>$user['permissions'], 
        'authenticated' => true, 
        'logged_in' => TRUE 
       ); 


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

       } 

내가 디버깅 그리고 난 그냥 $this->session->set_userdata($newdata); 위에 인쇄하는 경우 모든 배열 데이터가 user sessions 오는 것을보고 성공했습니다 내 코드입니다. 그 후에 다른 페이지에서 userPermissions 데이터를 검색 할 수 없으므로 session function이 모든 데이터를 저장할 수없는 이유가 확실하지 않습니다. 그러나 다른 모든 데이터가 전송됩니다. 여기에 어떤 도움을 이해할 수있을 것이다

도서관 세션

function set_userdata($newdata = array(), $newval = '') 
    { 
     if (is_string($newdata)) 
     { 
      $newdata = array($newdata => $newval); 
     } 

     if (count($newdata) > 0) 
     { 
      foreach ($newdata as $key => $val) 
      { 
       $this->userdata[$key] = $val; 
      } 
     } 

     $this->sess_write(); 
    } 

라이브러리에 session function 코드입니다.

답변

0

어쩌면 세션에 많은 양의 데이터를 저장했을 것입니다. CI는 네이티브 PHP 세션이지만 쿠키 세션을 사용하지 않습니다. 즉, 많은 양의 데이터를 저장하는 경우 쿠키가 너무 길어서 브라우저가 전체 쿠키를 반환하지 않는 경우가 있습니다. 즉, 결국 서버에서 모든 데이터를받지 못하게됩니다.

해결하려면 기본 PHP 세션을 사용하는 다른 라이브러리를 사용하여 세션 코어 라이브러리 (코어를 엉망으로 만들지 않도록 고유 한 MY_Session 라이브러리를 만들 수 있음)를 재정의하십시오. 나는 이것을 나의 프로젝트에 사용한다 : https://bitbucket.org/xperez/core-session-storage-for-codeigniter 그리고 매력처럼 작동한다.

관련 문제