只有NOT'sess_use_database'才能使用Codeigniter会话

时间:2012-02-29 21:09:02

标签: php codeigniter session

我有一个上传脚本,一旦上传了一段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并更改为'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一起使用而不是现在?感谢

更多信息: db config http://pastebin.com/qDbBQu8h

会话检查代码http://pastebin.com/cSmZqcAE

会话SET代码http://pastebin.com/wZf3mGW5

2 个答案:

答案 0 :(得分:1)

问题似乎在于这一行:

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

您正在使用set_userdata而不是userdata。

答案 1 :(得分:0)

你有加载codeigniter会话库吗?看起来你还没有加载会话库,确保首先从autoload.php或你的控制器加载库,

$this->load->library('session');