kissgxd 发表于 2014-5-13 16:51:43

在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

yhkwings 发表于 2014-5-13 17:40:15

大神,你的trim函数能用?我在CI框架里面用的时候就报错呢?

yhkwings 发表于 2014-5-13 17:41:23

activex插件是用什么写的,也是PHP么

kissgxd 发表于 2014-5-13 21:43:18

yhkwings 发表于 2014-5-13 17:40
大神,你的trim函数能用?我在CI框架里面用的时候就报错呢?

trim那段是CI核心里的。

Ahgigu 发表于 2014-5-14 17:23:59

:) 好主意!!
页: [1]
查看完整版本: 在Controller动态修改config.php里的配置选项