В стандартном PHP я могу установить идентификатор сеанса следующим образом:
$my_session_id = $_GET['session_id']; //gets the session ID successfully session_id($my_session_id); //sets the session with my session_id session_start(); //starts session.
Как я могу это сделать с CodeIgniter? Я стараюсь:
$my_session_id = $_GET['session_id']; //gets the session ID successfully $this->session->userdata('session_id', $my_session_id); //it won't set the session with my id. print_r($this->session->userdata);
Я ошибаюсь? Пожалуйста, помогите мне, поскольку я потратил несколько часов на эту проблему. Если есть какая-то проблема с классом SessionIgniter Session, могу ли я использовать стандартный PHP-код для запуска сеанса? Я попытался поместить стандартный код в CodeIgniter, но он все еще не устанавливает session_id. Я также установил $config['sess_match_useragent'] = FALSE;
Это хак, который я только что предложил по другому вопросу . Поместите это в __construct
MY_Session
(непроверено и не будет работать с шифрованием)
public function __construct() { if( isset( $_GET['session_id'] ) ) $_COOKIE[ $this->sess_cookie_name ] = $_GET['session_id']; // Session now looks up $_COOKIE[ 'session_id' ] to get the session_id parent::__construct() }
Вам не нужно это делать, codeigniter делает все для вас.
Если вы хотите получить идентификатор сеанса, вы можете сделать это, позвонив:
$session_id = $this->session->userdata('session_id');
Однако вы можете обойти это: (Обратите внимание, что этому сообщению 3 года, и я не уверен, если он по-прежнему необходим)
используйте это для установки session_id в codeigniter:
$this->session->set_userdata( array('session_id', $your_session_id) );
а также
$session_id = $this->session->userdata('session_id');
для его повторного чтения.
Вы должны всегда начинать сеанс перед изменением любых переменных сеанса.
Я считаю, что для начала сеанса CodeIgniter вы можете сделать следующее:
$this->load->library('session'); $my_session_id = $_GET['session_id']; //gets the session ID successfully $this->session->userdata('session_id', $my_session_id); //it won't set the session with my id. print_r($this->session->userdata);