在Controller动态修改config.php里的配置选项
今天在做CI的项目里某个模块时,涉及到了activex插件。此插件自己模拟了个post发到了服务端。
结果每次只要一发,session就清零了。
追踪了一下代码发现是sess_match_useragent引起了。原因是CI读了一下发过来的cookie里session的useragent信息和本次post请求里的useragent做了一下对比,如果不同则destory掉了session,所以导致session丢失。具体源码如下:
if ($this->sess_match_useragent == TRUE AND trim($session['user_agent']) != trim(substr($this->CI->input->user_agent(), 0, 120)))
{
$this->sess_destroy();
return FALSE;
}
因为activex本身已经打包,且也不是自己写的,因此改的可能性不是很大,决定改一下CI。但是又不想整体放弃掉sess_match_useragent这个安全特性。因此打算就是和activex交互的Controller里动态取消掉sess_match_useragent的验证。
具体代码如下:
$CI =& get_instance();
$CI->config->set_item('sess_match_useragent', false);
$this->load->library('session');
这样的话就动态取消了本次请求的sess_match_useragent
大神,你的trim函数能用?我在CI框架里面用的时候就报错呢? activex插件是用什么写的,也是PHP么 yhkwings 发表于 2014-5-13 17:40
大神,你的trim函数能用?我在CI框架里面用的时候就报错呢?
trim那段是CI核心里的。
:) 好主意!!
页:
[1]