CodeIgniter上传类库的一个Bug
发布于: September 14, 2009, 12:13 pm 分类: PHP/MySQL 作者: Saturn 1 个评论
这几天重构博客程序的时候,发现了一个CodeIgniter默认上传类的BUG。很奇怪的是,一直到前些天CI官方最新发布的1.7.2,此BUG仍未修正,特此记录。
症状:只能上传图片后缀的文件,其他类型文件(比如.zip,.tar.gz)无法通过验证,就算你将这些类型添加进了$config['allowed_types']。
涉及到的CodeIgniter版本:1.7.1;1.7.2。
原因:Upload Class中的is_allowed_filetype()方法有逻辑错误。
解决方案:
1、如果你不想动CI的系统源码,那么就将除图片类型之外的其他后缀,放到图片类型之前,比如:
$config['allowed_types'] = 'zip|gz|png|gif|jpg';(正确)
$config['allowed_types'] = 'png|gif|jpg|zip|gz';(错误)
请注意以上暗红色部分的位置。
2、对Upload.php开刀并修改is_allowed_filetype()的判断逻辑,解决办法在这个帖子里面:
http://codeigniter.com/forums/viewthread/113029/
这个BUG在BUG Tracker存在了那么久,开发者竟然不采纳的……What can I say?