Подумайте на минуту, что вы делаете.Сначала вы просто начинаете сеанс, вызывая $this->load->library('session')
.Затем вы немедленно прекращаете сеанс с помощью $this->session->sess_destroy();
.
. Есть несколько проблем с тем, что вы пытаетесь. Прочтите это , чтобы узнать больше.
Было бы гораздо лучше просто очистить $_SESSION
и затем добавить в него новые данные.
public function index()
{
$this->load->library('session');
// if you want a new session id uncomment the next line, needs to happen before you clear $_SESSION
//session_regenerate_id();
$_SESSION = array();
// if you uncommented earlier then uncomment the next too
//$_SESSION['__ci_last_regenerate'] = time();
$session_data = array (
'key_1' => 'value_1',
'key_2' => 'value_2',
'key_3' => 3
);
$this->session->set_userdata($session_data);
$this->session->set_userdata('key_4', 4);
print_r($_SESSION);
}
С CodeIgniter> v3.0.0 вы можете установить $_SESSION
напрямую.Документация фактически рекомендует делать это таким образом.Имея это в виду, строка
$this->session->set_userdata('key_4', 4);
может (должна) быть написана
$_SESSION['key_4'] = 4;
set_userdata()
полезна для быстрой установки большого количества ключей / значений $_SESSION
.
Тем не менее, следующее кажется мне менее абстрактным, чем предыдущий код.Если ничего другого, то он использует крошечный чуть меньше памяти и избегает вызова функций.
$_SESSION = array();
$_SESSION['key_1'] = 'value_1';
$_SESSION['key_2'] = 'value_2';
$_SESSION['key_3'] = 'value_3';
$_SESSION['key_4'] = 'value_4';
$_SESSION['__ci_last_regenerate'] = time();
Извините, иногда я не могу удержаться от перехода в режим лекции.