Сессия пользовательских данных Codeigniter пуста

Когда я устанавливаю сессию с помощью set_userdata и проверяю, что на другой странице все настроено хорошо, за исключением пользовательских данных …
я использую var_dump($this->session->all_userdata()); и код говорит

array (5) {[«session_id»] => string (32) «7195e5aea1695762492bf85d44112120» [«ip_address»] => string (13) «xxx.xxx.x.xxx» [«user_agent»] => string (120) «Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 38.0.2125.104 Safari / 537.3» [«last_activity»] => int (1414848680) [«user_data»] => строка (0) «»}

Часть user_data пуста.

Вот мой код
(Приложение / контроллеры / login.php)

class Login extends CI_Controller {
function index(){
$this->load->model('Join_model');
$this->load->view('head');
if($this->input->post('id')){
$data = $this->Join_model->gets(array(
'table'=>'acc_wait_tb',
'id'=>$this->input->post('id'),
'password'=>$this->input->post('password'),
));
if($data == true){
$dd = $this->db->get_where('acc_wait_tb', array('id'=>$this->input->post('id')))->row();
$new_data = array(
'user_id'=>$dd->id,
'name'=>$dd->name,
'email'=>$dd->email,
);
$this->session->set_userdata($new_data);
echo "<script>
location.href='/index.php/main';
</script>";
}else if($data == false){
echo "<script>alert('Login Fail.');</script>";
$this->load->view('log_main');
$this->load->view('footer');
}
}else{
$this->load->view('log_main');
$this->load->view('footer');
}
}
}

и application / views / nav.php

var_dump($data);
$user_id = $this->session->userdata('user_id');?>
<?php if($user_id != ""): ?>
<p class="navbar-text pull-right" style="margin-right:30px;">Hi,
<a class="navbar-link" href=""><?=$this->session->userdata('name')?></a>
</p>
<?endif;?>

и application / config / config.php

$config['encryption_key'] = 'asdfqwerertydfghcvbnsdfgqwerxcvb';

/*
|--------------------------------------------------------------------------
| Session Variables
|--------------------------------------------------------------------------
|
| 'sess_cookie_name'    = the name you want for the cookie
| 'sess_expiration'     = the number of SECONDS you want the session to last.
|   by default sessions last 7200 seconds (two hours).  Set to zero for no expiration.
| 'sess_expire_on_close'  = Whether to cause the session to expire automatically
|   when the browser window is closed
| 'sess_encrypt_cookie'   = Whether to encrypt the cookie
| 'sess_use_database'   = Whether to save the session data to a database
| 'sess_table_name'     = The name of the session database table
| 'sess_match_ip'     = Whether to match the user's IP address when reading the session data
| 'sess_match_useragent'  = Whether to match the User Agent when reading the session data
| 'sess_time_to_update'   = how many seconds between CI refreshing Session Information
|
*/
$config['sess_cookie_name']   = 'ci_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']    = 'ci_sessions';
$config['sess_match_ip']    = FALSE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update']  = 300;

/*
|--------------------------------------------------------------------------
| Cookie Related Variables
|--------------------------------------------------------------------------
|
| 'cookie_prefix' = Set a prefix if you need to avoid collisions
| 'cookie_domain' = Set to .your-domain.com for site-wide cookies
| 'cookie_path'   =  Typically will be a forward slash
| 'cookie_secure' =  Cookies will only be set if a secure HTTPS connection exists.
|
*/
$config['cookie_prefix']  = "";
$config['cookie_domain']  = "";
$config['cookie_path']    = "/";
$config['cookie_secure']  = TRUE

Пожалуйста! Помоги мне! Эта ошибка сводит меня с ума! Пожалуйста…!
(Я пытаюсь решить этот вызов userdata в контроллере и отправить данные в представление с помощью $this->load->view('nav.php',$data); Но это не сработало …)

0

Решение

Вы печатаете пользовательские данные в представлении или контроллере? Попробуйте распечатать его в контроллере. Я считаю, что $ this не то же самое, что в контроллере, который может быть причиной проблемы. Возможно, вам придется передать $ new_data в представление. Кроме того, вместо

echo "<script>
location.href='/index.php/main';
</script>";

вы могли бы использовать

redirect(main);

который перенаправляет серверную часть

0

Другие решения

Вы загружаете сессионный класс?

$ This-> load-> библиотека ( ‘сессии’);

Я всегда устанавливаю сессию в автозагрузке. Но когда я забываю, я сталкиваюсь с такими проблемами.

0

Я могу ошибаться, потому что я не знаю, где работает ваш код, но если вы localhost, вы можете найти браузеры, отказывающиеся от вашего cookie. также у вас есть

$config['cookie_secure']  = TRUE

и ‘cookie_secure’ = Cookies будут устанавливаться только при наличии безопасного HTTPS-соединения.

0
По вопросам рекламы [email protected]