用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2648|回复: 4
收起左侧

[讨论/交流] 在Controller动态修改config.php里的配置选项

[复制链接]
发表于 2014-5-13 16:51:43 | 显示全部楼层 |阅读模式
今天在做CI的项目里某个模块时,涉及到了activex插件。
此插件自己模拟了个post发到了服务端。
结果每次只要一发,session就清零了。
追踪了一下代码发现是sess_match_useragent引起了。原因是CI读了一下发过来的cookie里session的useragent信息和本次post请求里的useragent做了一下对比,如果不同则destory掉了session,所以导致session丢失。具体源码如下:


PHP复制代码
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的验证。
具体代码如下:

PHP复制代码
 
 $CI =& get_instance();
      $CI->config->set_item('sess_match_useragent', false);
      $this->load->library('session');
 
 
复制代码



这样的话就动态取消了本次请求的sess_match_useragent
发表于 2014-5-13 17:40:15 | 显示全部楼层
大神,你的trim函数能用?我在CI框架里面用的时候就报错呢?
发表于 2014-5-13 17:41:23 | 显示全部楼层
activex插件是用什么写的,也是PHP么
 楼主| 发表于 2014-5-13 21:43:18 | 显示全部楼层
yhkwings 发表于 2014-5-13 17:40
大神,你的trim函数能用?我在CI框架里面用的时候就报错呢?

trim那段是CI核心里的。

本版积分规则