我使用codeigniter作爲框架。在Codeigniter重定向後會話丟失
首先,我使用localhost
,但是當我更改爲我的IP地址時,登錄功能不再起作用。我發現重定向到另一個控制器後會話丟失。
這裏是print_r($this->session->all_userdata());
[session_id] => 7b00fa0f8790f48d24446f9eb4e6aab2
[ip_address] => 10.42.68.71
[user_agent] => Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1
[last_activity] => 1285962398
[user_data] =>
結果正如你可以看到它並沒有傳遞給user_data
任何數據,但它被設置之前,當我測試重定向。
我把控制器分成兩個,第一個是用戶 - >登錄功能的處理程序,另一個是規劃器,我從用戶控制器重定向的鏈接的處理程序。
users.php
(第一控制器):
$this->load->model('users_model');
$this->load->model('mymodel');
$this->load->database();
$email = $this->input->post('email');
$pass = $this->input->post('password');
$type = $this->input->post('type');
// Authenticate the user
$userdata = $this->users_model->auth_user($email,$pass,$type);
if($userdata)
{
$data = array('FIRSTNAME' => $userdata->FIRSTNAME,
'LASTNAME' => $userdata->LASTNAME,
'EMAIL' => $userdata->EMAIL,
'LOGIN' =>TRUE, 'TYPE' => $type);
$this->session->set_userdata($data);
redirect('planner/view_system','refresh');
}
planner.php
(第二控制器):
function __construct() {
parent::__construct();
if (! ($this->session->userdata('LOGIN')))
{
print_r (var_dump($this->session->userdata('FIRSTNAME')));
print_r($this->session->all_userdata());
}
$this->load->helper(array('form','html','url'));
這裏是我的配置
$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'] = TRUE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update'] = 300;
會發生這種情況在所有瀏覽器會話中重新定向問題?你有沒有嘗試從其他函數訪問會話值然後構造?錯誤日誌中是否有錯誤或通知? –
我不知道這是否會幫助,但嘗試改變sess_use_database爲真? –
是的,這發生在所有瀏覽器上。我沒有從其他功能訪問值,我直接重定向到規劃師。沒有錯誤。 – Zatanna