我目前正在尝试使用PHP创建一个CMS,纯粹是出于教育的兴趣。我希望管理员能够创建内容,这些内容将以纯HTML格式解析并保存在服务器存储上,以避免执行PHP脚本所产生的开销。不幸的是,我只能想到几种方法:
cached
目录上设置写入权限。然后,PHP脚本可以在请求时include
或fopen/fread/echo
来自cached
目录中文件的内容。这可能是以Mediawiki式的方式进行的:index.php?page=xyz
之类的东西可以在运行时读取并回显来自cached/xyz.html
的内容。但是,我需要确保$_GET['page']
的理智,以防止index.php?page=http://www.bad-site.org/malicious-script.js
等令人讨厌的变化。我个人对第二个想法并不太兴奋,但第一个想法听起来很不安全。有人可以建议一个很好的方法来完成这项工作吗?
编辑:我不赞成从数据库中获取数据。我想要从数据库中获取数据的唯一时间是内容被缓存。其次,我无权访问memcached或任何PHP加速器。
答案 0 :(得分:2)
由于您正在构建CMS,您必须接受如果用户想要对访问者做恶事,他们很可能会这样做。无论您在何处存储内容,都是如此。
如果公共站点都是静态内容,那么让CMS直接写入文件没有任何问题。但是,您需要将Web服务器配置为不在CMS可写入的任何目录中执行任何操作。
即使您不想每次都访问数据库,也可以设置缓存以最大限度地减少数据库读取。 Zend_Cache非常适用于此,并且可以非常有效地用作独立组件。
答案 1 :(得分:1)
您应该将您的页面放在数据库中并使用参数化SQL查询检索它们。
答案 2 :(得分:0)
我会使用第二个选项但是修改它以便使用mod_rewrite而不是自定义的php函数来检索文件。