Сессия Codeigniter работает только если НЕ 'sess_use_database' - PullRequest
2 голосов
/ 01 марта 2012

У меня есть скрипт загрузки, который после загрузки чего-либо занимает 5 минут, в течение которых пользователь может редактировать заголовок для своей загрузки. Все нормально работает, когда сеанс представляет собой локальный файл cookie с такими настройками:

$config['sess_cookie_name']     = 'if_session';
$config['sess_expiration']      = 300;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = TRUE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

Теперь, когда я пытаюсь изменить это для использования таблицы ci_sessions, я меняю sess_encrypt_cookie на false и на true sess_use_database.

Данные теперь отображаются в базе данных, но мой код обнаружения сеанса не находит ни одного сеанса!

<?php if ($this->session->userdata('edit')) : ?> 
<?php $session_info = $this->session->userdata('edit'); ?>
<?php $ids_array = explode(",", $session_info['image_id']); ?>
<?php foreach ($ids_array as $id): ?>
<?php 
if ($id == $alpha_id 
&& 
$this->session->userdata('ip_address') == $_SERVER['REMOTE_ADDR'] 
&& 
$session_info['session_id'] == $this->session->userdata('session_id')) :
?> 

Кто-нибудь может понять, почему он работает с файлами cookie, а не сейчас? Спасибо

подробнее: дб конфиг http://pastebin.com/qDbBQu8h

код сеанса CHECK http://pastebin.com/cSmZqcAE

код сеанса SET http://pastebin.com/wZf3mGW5

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Кажется, проблема в этой строке:

'session_id' => $this->session->set_userdata('session_id')

Вы используете set_userdata вместо userdata.

0 голосов
/ 01 марта 2012

загружаете ли вы библиотеку сеансов codeigiter? похоже, вы еще не загрузили библиотеку сессий, убедитесь, что сначала загрузили библиотеку из autoload.php или из вашего контроллера,

$this->load->library('session');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...