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

关于CI的过滤

[复制链接]
发表于 2007-11-11 17:06:46 | 显示全部楼层 |阅读模式
初接触CI。文档里有个application flow chart讲了index.php->routing->security->controller,the HTTP request and any user submitted data is filtered for security,那就应该会有一个过滤,但是我试了一下,发现如'之类的东西并没有被转义,而是直接传过来了如| 'test'          | <?php echo "test";?>

我想问一下,是不是这里的过滤得由我们来做?还是系统自动提供了过滤功能,如果是这样的话怎么才能使之生效?
发表于 2007-11-11 17:26:24 | 显示全部楼层
有全站 XSS 过滤,并且可以在 config.php 里限制 URL 里可以出现的字符。
CI 的过滤机制主要靠验证类来实现。
 楼主| 发表于 2007-11-12 15:56:36 | 显示全部楼层
谢谢解答。

还有个问题,redirect()从一个action跳转至另一个action的话能不能传递参数?
redirect('blog/comments/'.$_POST['entry_id']);  除了entry_id之外我有一些错误提示之类的东西想在blog/comments显示的话该怎么做呢?
发表于 2007-11-12 18:29:11 | 显示全部楼层
这个其实就是普通的 PHP 重定向,你可以传任何东西,如果你用 URL 段,那你就要符合 CI 的规矩。
如果你使用 URL 参数,那你可以随便拼接字符串。
 楼主| 发表于 2007-11-14 19:38:05 | 显示全部楼层
谢谢hex的解答
 楼主| 发表于 2007-11-14 19:41:32 | 显示全部楼层
不想新开贴了,我还有一个问题
就是ci连接数据库的字符集问题,我想问的是怎么可以设置字符集,并且CI默认是怎么做的,会对mysql4.0以上的版本自动设置一个默认的字符集?
看了文档里的database类,没发现这方面的说明
发表于 2007-11-15 09:31:22 | 显示全部楼层
CI 的数据库类现在还没有设置字符集的功能,也许将来的版本会有。
我一般是在每个模型(不一定是每个,和字符集有关的地方才需要)的构造函数里调用 $this->db->query('set names utf8');
这样做有一点好处就是不修改源代码,方便以后升级。
如果你想直接修改 database 类库也是可以的,只是以后升级就麻烦了。
发表于 2007-11-15 12:41:35 | 显示全部楼层
我也是用的$this->db->query('set names utf8');

本版积分规则