我有一个上传脚本,一旦上传了一段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
答案 0 :(得分:1)
问题似乎在于这一行:
'session_id' => $this->session->set_userdata('session_id')
您正在使用set_userdata而不是userdata。
答案 1 :(得分:0)
你有加载codeigniter会话库吗?看起来你还没有加载会话库,确保首先从autoload.php或你的控制器加载库,
$this->load->library('session');