CodeIgniter 1.7.3에서 set_userdata를 사용하여 부울, 정수 및 문자열 값을 추가 한 다음 즉시 다시 읽으면 유형이 보존됩니다. 그러나 다른 페이지로 리디렉션하고 값을 다시 읽으면 항상 문자열 값을 가져옵니다. CI 1.6.1에서는 유형이 보존됩니다. 왜 이런 일이 일어나고 있는거야? 1.7.3의 버그입니까? 해결 방법은 무엇입니까?codeigniter set_userdata가 세션 데이터의 유형을 보존하지 않습니다.
예 : 세션 데이터를 설정 다시 읽기, TEST2로 리디렉션 및 다시 읽어 TEST1을 실행 CI 로그에
<?php
class Test1 extends Controller
{
function index()
{
$this->session->set_userdata(array('vbool'=>TRUE));
$this->session->set_userdata(array('vint'=>23));
$this->session->set_userdata(array('vstr'=>'abc'));
$vbool = $this->session->userdata('vbool');
$vint = $this->session->userdata('vint');
$vstr = $this->session->userdata('vstr');
log_message('error', "test1: vbool=$vbool " . gettype($vbool));
log_message('error', "test1: vint=$vint " . gettype($vint));
log_message('error', "test1: vstr=$vstr " . gettype($vstr));
redirect('/backend/test2', 'location');
}
}
?>
<?php
class Test2 extends Controller
{
function index()
{
$vbool = $this->session->userdata('vbool');
$vint = $this->session->userdata('vint');
$vstr = $this->session->userdata('vstr');
log_message('error', "test2: vbool=$vbool " . gettype($vbool));
log_message('error', "test2: vint=$vint " . gettype($vint));
log_message('error', "test2: vstr=$vstr " . gettype($vstr));
}
}
?>
OUTPUT을
ERROR - 2011-05-09 16:56:11 --> test1: vbool=1 boolean
ERROR - 2011-05-09 16:56:11 --> test1: vint=23 integer
ERROR - 2011-05-09 16:56:11 --> test1: vstr=abc string
ERROR - 2011-05-09 16:56:11 --> test2: vbool=1 string
ERROR - 2011-05-09 16:56:11 --> test2: vint=23 string
ERROR - 2011-05-09 16:56:11 --> test2: vstr=abc string
구성 설정
ERROR - 2011-05-09 16:56:11 --> sess_encrypt_cookie=
ERROR - 2011-05-09 16:56:11 --> sess_use_database=
ERROR - 2011-05-09 16:56:11 --> sess_table_name=ci_sessions
ERROR - 2011-05-09 16:56:11 --> sess_expiration=7200
ERROR - 2011-05-09 16:56:11 --> sess_match_ip=
ERROR - 2011-05-09 16:56:11 --> sess_match_useragent=1
ERROR - 2011-05-09 16:56:11 --> sess_cookie_name=ci_session
ERROR - 2011-05-09 16:56:11 --> cookie_prefix=
ERROR - 2011-05-09 16:56:11 --> cookie_path=/
ERROR - 2011-05-09 16:56:11 --> sess_time_to_update=300
ERROR - 2011-05-09 16:56:11 --> encryption_key=
실제로 문제를 해결하지는 못했지만 CI2로 업데이트하지 않은 이유는 무엇입니까? – Repox
CI2.0.0으로 업데이트하면 문제가 해결되었습니다. 감사! – TomBl