CodeIgniter 2.1.3 Session Class有問題。Codeigniter無法反序列化 - 錯誤會破壞設置flashdata的會話
所以我注意到這個設置flashdata。在其他模塊上我沒有這個錯誤。這似乎是特定於那一個模塊。
它發生在我運行form_validation
時,我設置了flashdata - >在那一刻,框架想要反序列化並且出現錯誤 - 這破壞了我的會話。
錯誤日誌:
Severity: Notice --> unserialize(): Error at offset 0 of 256 bytes /Applications/MAMP/htdocs/ges/system/libraries/Session.php 727
我試圖CI的所有新的會話類,也試圖反序列化之前修剪。但它仍然會殺死我的會話。
這裏是我的控制器的部分代碼(我不得不改變一些變種名稱,造成安全):
<?php
public function add($reg = false)
{
if (!$reg)
redirect('tickets');
restrict_access(array(1,4), '/');
$url = url_ci_decrypt($reg);
parse_str($url, $url_data);
$data = $this->session_user->getSessionUserData();
$data['title'] = 'XXXXX';
$data['reg'] = $url_data;
$data['reg']['name'] = $this->tickets_model->getTicketTypeText($url_data['type']);
$data['reasons'] = $this->tickets_model->getTicketReasons();
$this->form_validation->set_rules('message', 'Message', 'trim|required|min_length[20]|max_length[2000]');
if ($this->form_validation->run() && $this->input->post()) {
$posted = $this->input->post();
$newdata = array(
'x1' => $this->session->userdata['x1'],
'x2' => $this->session->userdata['x2'],
'x3' => $url_data['x3'],
'x4' => $url_data['x4'],
'x5' => 0,
'x6' => $posted['text']
);
$result = $this->tickets_model->addTicket($newdata);
if ($result === true) {
$this->session->set_flashdata('msg', 'message1');
} else {
$this->session->set_flashdata('msg', 'message2');
}
redirect('/');
} else if ($this->input->post()) {
$posted = $this->input->post();
$data['text'] = strip_tags($posted['message']);
}
/* loading views */
}
// some more modules...
這裏還爲會話我的配置部分:
$config['sess_cookie_name'] = 'user_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = true;
$config['sess_encrypt_cookie'] = true;
$config['sess_use_database'] = true;
$config['sess_table_name'] = 'user_sessions';
$config['sess_match_ip'] = false;
$config['sess_match_useragent'] = true;
$config['sess_time_to_update'] = 300;
您要存儲多少數據? Cookie有一個4Kb限制IIRC。如果序列化的字符串被截斷,則無法正確反序列化它 –
它小於4Kb。我使用的是UTF-8,字符串長度大約是500-600個字符。 但是,如果'sess_encrypt_cookie'是'false',它工作正常! - 但這將是一個很大的安全問題... – CodeBrauer