CI 묻고 답하기

제목 세션에서 user_data 를 불러오질 못합니다.
글쓴이 왕기장군 작성시각 2012/03/09 14:36:42
댓글 : 13 추천 : 0 스크랩 : 0 조회수 : 17593   RSS
 

샘플 소스는 이렇습니다.

public function login()
{
$this->load->library('session');
$data = array(
                 'id'  => 'scv',
                 'logged_in' => TRUE
              );
$this->session->set_userdata($data);
echo "OK";
}

이렇게 하면 DB 테이블에 데이터가 자알 들어갑니다.

SESSION_ID
69fcece62716c623a264df56eda0741a

IP_ADDRESS 
211.59.6.100

USER_AGENT  
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11

LAST_ACTIVITY 
1331271582

USER_DATA 
a:3:{s:9:"user_data";s:0:"";s:2:"id";s:3:"scv";s:9:"logged_in";b:1;}
 


그런데 메뉴얼에 보면... 

$this->session->userdata('logged_in')  하면 USER_DATA 컬럼의 값중에 logged_in 의 bool 값을 가져오는것 처럼 되어 있는데요... 

어떻게 해도 가져오질 못하고 계속 FALSE 입니다. 

페이지 상에 보이는 세션ID 값도비교해 봤고... 
$this->session->userdata('session_id');

이것도 

$this->session->all_userdata()

이것도 잘 가져 옵니다. 

그런데 왜 user_data 컬럼은 못가져 올까요?

어떻게 해야 됩니까


DB 는 오라클 입니다.



 
 다음글 [초보]또 링크가 안돼요~ (3)
 이전글 [초급]anchor의 사용법좀 알려 주세요~ (4)

댓글

왕기장군 / 2012/03/09 15:12:05 / 추천 0
 뭔가 방금 자답을 찾은것 같아서 글을 올렸는데 아니어서 지웠스습니다.ㅜㅜ 아.. 힘드네요
왕기장군 / 2012/03/27 08:35:10 / 추천 0
 dd
왕기장군 / 2012/03/27 08:35:14 / 추천 0
 ff
닥터케이 / 2015/12/10 15:00:02 / 추천 0
저도 지금 상태가 이런데... 답을 아시는 분 있나요?ㅜㅜ
kaido / 2015/12/10 15:05:31 / 추천 0
var_dump($this->session->userdata('logged_in'));

일단 덤프부터 떠보세요.
닥터케이 / 2015/12/10 15:46:01 / 추천 0
kaido님, login() 안에서 덤프를 뜨면 값이 나와요.
그런데, getItemList() 안에서는 bool(false) 값이 나와요ㅜㅜ
혹시 왜 이런지 아세요??

class GM extends CI_Controller 
{

    public function login() 
    {
        ....
        $this->load->library('session');
        $this->session->set_userdata('user_seq', '42');
        ....
     }

    public function getItemList() 
    {
         $this->load->library('session');
         var_dump($this->session->userdata('user_seq'));
         ....
    }
}
kaido / 2015/12/10 16:06:06 / 추천 0
login()  여기에서는 $this->session->userdata() 값이 나오는데
getItemList() 에서는  $this->session->userdata() 값이 안나온다는 말씀이신 거죠?

 
닥터케이 / 2015/12/10 16:11:50 / 추천 0

네, 맞아요ㅜㅜ

혹시 config.php 도 알려드려요..

$config['sess_cookie_name']        = 'ci_session';

$config['sess_expiration']        = 7200;

$config['sess_expire_on_close']    = FALSE;

$config['sess_encrypt_cookie']    = FALSE;

$config['sess_use_database']    = FALSE;

$config['sess_table_name']        = 'ci_sessions';

$config['sess_match_ip']        = FALSE;

$config['sess_match_useragent']    = TRUE;

$config['sess_time_to_update']    = 300;

 

 

kaido / 2015/12/10 16:21:28 / 추천 0

세션이 저장 안 되고 있습니다.

login에서는 객체에 값을 저장하고 호출 했으니 당연히 바로 나옵니다.

그런데 다른 페이지에서는 세션 값이 안나오는 이유는 세션값이 없기 때문입니다.

참고로...

$this->session->userdata() 이렇게 호출 하면 값이 없으면 자동으로 false 를 넣어 줍니다.

$this->session->userdata[] 이렇게 호출 하면 값이 없으면 null point 에 대한 에러 값이 나옵니다.

보통 세션 설정을 문제입니다.파일 타입으로 세션을 잡아 놓았는데, 세션 파일이 정상으로 저장 되지 않으면 나오는 현상 입니다.디비로 잡아 놓았을 경우, 디비에 저장이 정상적으로 안되거나, 매치가 안되고 있는 현상 입니다.

변종원(웅파) / 2015/12/10 16:26:09 / 추천 0

$config['sess_match_useragent']    = TRUE;  <- false로 바꾸시고

쿠키명에서 _(언더바) 빼고 테스트 해보세요.

닥터케이 / 2015/12/10 17:21:06 / 추천 0

$config['sess_match_useragent']    = FALSE; 로 바꿨어요.

그런데, 

login()  에서

{"session_id": "ebafa303afebfd548195d3cb31b11aab",  "ip_address": "192.168.0.1",  "user_agent": "UnityPlayer/5.2.3f1 (http://unity3d.com)",  "last_activity": 1449737159,  "user_data": "",  "user_seq": "42"}

getItemList() 에서는 

{ ["session_id"]=>  string(32) "948429d9659c222f19e5fc9d46ffe4e7"  ["ip_address"]=>  string(11) "192.168.0.1"  ["user_agent"]=>  string(40) "UnityPlayer/5.2.3f1 (http://unity3d.com)"  ["last_activity"]=>  int(1449737162)  ["user_data"]=>  string(0) "" }

쿠키가 새로 생성되어요ㅜㅜ

이 부분 도움 부탁드려요~~

찾고(세션유지), 해보고 있는데 잘 안되어서 이렇게 여쭤요...

 

찾다보니까 안드로이드에서 세션이 확실하지 않다고 나오는데, 유니티도 그런가요??

클라이언트가 유니티고 서버를 코드이그나이터로 개발 중이거든요.

닥터케이 / 2015/12/10 17:49:42 / 추천 0

자답입니다.

유니티에서 세션이 변경되네요ㅜㅜ

웹 브라우저에서는 잘 되고요...

닥터케이 / 2015/12/10 23:19:54 / 추천 0

답변 주신 kaido, 변종원님 감사합니다!!

덕분에 해결하였습니다~~