Пользовательские данные в сеансе codeigniter не могут быть доступны на нескольких страницах / просмотрах - PullRequest
0 голосов
/ 20 декабря 2011

Я сталкиваюсь с проблемами в классе сессии codeigniter 2.x.Я хочу иметь идентификатор пользователя в сеансе для глобального доступа на моих страницах после входа в систему пользователя

У меня есть 2 просмотра и 1 контроллер, один просмотр один У меня была форма входа, когда пользователь отправляет форму, я проверяю ее и создаю пользователя сеансаданные, вызывая метод в контроллере как

function create_session($data) {        
        $mydata = array(
                   'userid'  => $data,
                   'role'     => $role,
                   'logged_in' => TRUE
               );

        $this->session->set_userdata($mydata);

        return;
    }

, затем загружается мое второе представление, и у меня на этом представлении

print_r($this->session->userdata); 

и выводятся правильные результаты

но когда я нажимаю на 1-й вид в навигации, я обнаруживаю, что

[userdata] => 

его пустая конфигурация моей сессии выглядит как

$config['encryption_key'] = 'askdfjowieuriomzx,mv';
$config['sess_cookie_name'] = 'wana_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'wana_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300; 

Я искал форумы, но не могу решитьэту проблему, пожалуйста, решите эту проблему или предложите альтернативный метод.

Ответы [ 4 ]

1 голос
/ 08 октября 2012

Попробуйте изменить ссылку на «gmt» - в config.php

$config['time_reference'] = 'gmt'; вместо $config['time_reference'] = 'local';

1 голос
/ 20 декабря 2011

если вы установили userdata, вы можете получить к нему доступ с вашего основного контроллера, назначить его защищенному var (массиву), и все, что расширяет ваш главный контроллер, должно иметь к нему доступ.

class Main_Controller extends CI_Controller
{
protected $_session_data=array();

public function __construct()
{
   parent::__construct();

   if($this->session->userdata)
   {
      foreach($this->session->userdata as $k => $v)
      {
         $this->_session_data[$k] = $v;
      }
   }
}
}

некоторый класс, расширяющий ваш главный контроллер

class someclass extends Main_Controller
{

public function __construct()
{
  parent::__construct()
}

public function view1()
{
   $this->load->view('view1', array('session_data'=>$this->_session_data))
 }

 public function view2()
 {
    $this->load->view('view2', array('session_data'=>$this->_session_data))
 }
}

внутри каждого вида

var_dump($session_data['uid'])


foreach($session_data as $k){}
1 голос
/ 20 декабря 2011
$config['sess_encrypt_cookie']  = FALSE;

Это моя конфигурация, просто предположение

1 голос
/ 20 декабря 2011

Помимо комментария, который я вам написал, убедитесь, что вы загружаете свою библиотеку сессий на каждую нужную вам страницу или используете автозагрузку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...