我有一个使用CodeIgniter框架用PHP编写的网站。这项工作已经进行了几年,我最终想开源它。它目前运行了大约1万行PHP(不包括CodeIgniter库)。最近我很清楚,我不能一直使用CodeIgniter。
它的主要问题是,开发人员似乎要么不理解XSS和正确的转义,要么不在乎。即使是直接在属性(例如anchor()
)中结束的函数的参数也不会转义。生成表单输入的函数在是否转义方面不一致,文档对此主题保持沉默(我所能做的就是阅读源代码)。而"模板引擎",如果它可以被称为模板引擎,也不会逃脱,这使得它基本上毫无用处。每次我想输出链接时,我都厌倦了编写<?=anchor(html_escape('foo/bar/' . rawurlencode($baz)), html_escape($baz))?>
。它让代码变得非常丑陋,我肯定我错过了一些地方。在某些情况下,输入被不适当地"消毒",这种行为无法关闭;例如,如果用户在任何形式的输入字段中输入一个包含%10
的字符串,那么在应用程序看到它之前,该子字符串就会被删除。
我的代码依赖于许多CodeIgniter库,包括数据库(活动记录模式)、电子邮件、表单验证、分页和会话。
什么是另一个PHP框架:
- 基于MVC模式
- 有一个合适的模板引擎,不擅长转义
- 相对容易从CodeIgniter过渡到(具有大多数相同的库)
有很多MVC框架。我个人使用Symfony。这是一个你可以在不需要无用库的情况下随意扩展的框架。其他需要考虑的是锂和Laravel
Symfony的用户群比其他用户群更大,但它们都相当稳固。您也可以将Composer与框架一起使用,以扩展第三方库。
您可以研究一下CakePHP
,它基于Rails原理,应该足够快,可以在没有太多麻烦的情况下重写应用程序。
无论如何,Zend Framework
应该是一个很酷的替代品。