2011-12-13 3 views
0

로그인 양식에 "내 정보 기억"확인란을 구현하려고합니다. 문서 도구 보면서 나는 기본적으로 설정 설정을 변경할 수 있습니다 참조 :사용자 선택에 따라 CodeIgniter 세션 구성 변경

$config['sess_expiration'] = 10; // I set it to 10 seconds for testing 

는 난 할 노력하고있어 사용자가 상자를 체크하면, 더 이상 적어도 무기한이 시간을 연장, 또는이다. POST를 통해 입력이 전달 될 때 sess_expiration의 값을 변경하고 값이 변경된 것을 볼 수 있지만 새로운 시간 이후가 아니라 기본 시간 후에 만료됩니다. 내가이 전화를하고 나는 그것을 밖으로 에코 만약이 값이 제대로 설정,하지만 난 기다린 후 내 세션이 사라지고 난 다시 내 로그인 페이지로 리디렉션하고있다 볼 수있는 세션 정보를 설정 직전에

if ($this->input->post('rememberMe')) 
{ 
    $this->config->set_item('sess_expiration', 0); 
} 

.

$this->session->set_userdata(
    array('user' => array(
     'userId' => $user->userId, 
     'userName' => $user->userName, 
     'userLevel' => $user->userLevel, 
     'userEmail' => $user->userEmail, 
     'userCreated' => $user->userCreated, 
     'userUpdated' => $user->userUpdated, 
     'userStatus' => $user->userStatus 
    ), 
    'loggedIn' => $user->userId 
)); 

내가 잘못 했나요? 나는이 문제에 너무 많은 시간을 할애하여 계속 나아갈 것이며 여기 누군가가 내가 잘하고 있지 않은 것을 지적 해 줄 수 있기를 바랍니다.

감사합니다.

답변

1

당신이 이것에 대한 쿠키를 설정하는 방법에 대한 생각 했습니까? 쿠키를 반환 할 때마다 사용자가 정의한 변수를 검색 할 수 있도록 사용자와 함께 데이터를 저장하는 것이 좋습니다.

if ($this->input->post('rememberMe')) 
{ 
    $this->input->set_cookie($name, $value, $expire, $domain, $path, $prefix, $secure); 
} 

변수를 사용하지 않으려는 경우 대신 정보가 포함 된 배열을 전달할 수 있습니다.

if($this->input->get_cookie('cookie_name')) 
{ 
    //set the username and password for your form 
} 
else 
{ 
    //No cookie was found. Don't set anything. 
} 

I 돈 : 당신이 그 일을하면, 쿠키에 대한 로그인 페이지 모양의 컨트롤러에서 다음 쿠키의 이름을 선택하고 $ 값에 사용자 이름을 설정하거나 원하는대로하고, 오늘 아침에 이것을 시험해 볼 시간이 있지만 그것은 당신을 위해 일해야합니다.

+0

간단한 해결책을 과도하게 복잡하게 만들 수있는 능력이 나를 깜짝 놀라게합니다. :) 고맙습니다. – Seth

0

는이 작업을 수행 :

// Change the config setting 
$this->config->set_item('sess_expiration',0); 

// Force the Session class to recapture global settings by calling it's constructor 
$this->session->CI_Session() 
+0

'CI_Session()'을 실행하면 코드가 내 인증 컨트롤러를 손상시킵니다. 먼저'$ user' 세션 정보를 설정해야합니까, 아니면'CI_Session()'함수를 호출해야합니까? 사용자 안내서에 문서가 없습니다. – Seth

관련 문제