2012-02-29 105 views
2

我有一个上传脚本,一旦上传了一个5分钟的会话,用户可以编辑上传的标题。这是一个与所有工作正常时,会议只不过是当地的cookie使用这些设置:Codeigniter会话只适用于不'sess_use_database'

$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”假和真“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配置http://pastebin.com/qDbBQu8h

会议校验码http://pastebin.com/cSmZqcAE

会议确定的代码http://pastebin.com/wZf3mGW5

+0

您可以显示您用来创建会话表的“CREATE TABLE”语句吗? – 2012-02-29 21:11:01

+0

@FrancisAvila我没有它,但这里的结构,如果有帮助http://i39.tinypic.com/29uol1h.png – eeek 2012-02-29 21:12:41

+0

导出您的表与phpMyAdmin并发布上述结构。如果您需要帮助,您需要发布更多信息。 – Seabass 2012-02-29 22:05:25

回答

0

你加载codeigiter会议库?看起来像你没有加载Session库还,确保负载库首先从autoload.php或者从你的控制器,

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

的问题似乎是在这一行:

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

您正在使用set_userdata而不是userdata。

+0

的工作,但现在我的CHECK代码不拾起会话,继承人会话中的user_Data http://pastebin.com/JJngLvFc – eeek 2012-03-01 07:53:53

+0

非常难以告诉你提供的代码,你可以请发布完整的代码。 – 2012-03-01 08:00:41

+0

只是建议你不需要把这行$ this-> session-> userdata('ip_address')== $ _SERVER ['REMOTE_ADDR'],而不是你可以设置$ config ['sess_match_ip']为true它确实对你来说同样的事情。 – 2012-03-01 08:02:09