CodeIgniter适合快速搭建轻量博客因其体积小、启动快、兼容性强且开箱即用;但需手动处理URL美化、权限控制及复杂查询,Model层抽象能力有限,扩展搜索与关联查询依赖硬编码。

用CodeIgniter框架快速搭建个人博客平台时,需要直面它在真实项目中的表现:路由配置看似简单但URL美化需额外处理,MVC结构清晰却对Model层抽象能力要求高,模板渲染高效可复用性依赖开发者组织习惯。
为什么选CI做博客系统
CI框架体积小(核心约1.2MB)、启动快、对PHP版本兼容性极强,【无需Composer全局安装,解压即用】,特别适合单人维护的轻量级博客——比如你只想专注写文章,不想花三天配Laravel环境或调试Symfony权限系统。
它自带数据库类、分页类、表单验证、Session管理,写个带后台的博客,控制器+模型+视图三层代码加起来不到500行就能跑通基础功能。
搭建博客首页与文章列表
第一步:在application/controllers/下新建Blog.php,继承CI_Controller;
第二步:定义index()方法,用$this->db->get('posts')->result()查出所有文章;
第三步:把查询结果作为数组传给view:$this->load->view('blog/index', ['posts' => $posts]);;
第四步:在application/views/blog/index.php中用原生PHP语法遍历输出标题和摘要,【注意:不要直接echo $post->content全字段,防XSS攻击】,改用html_escape($post->title)包裹。
实现文章详情页与URL美化
方法一:默认Pathinfo模式
访问地址为http://localhost/blog/index.php/blog/detail/123,控制器中接收参数用$id = $this->uri->segment(3),安全但URL丑陋。
方法二:启用Apache重写+修改config.php
把$config['base_url']设为http://localhost/blog/,再开启$config['url_suffix'] = '.html',配合.htaccess移除index.php;【rewrite规则必须启用,否则404】,否则所有链接都会崩。
方法三:自定义路由映射
在application/config/routes.php里加一行:$route['article/(:num)'] = 'blog/detail/$1';,这样就能用/article/123访问,比默认路径更语义化。
后台登录与权限控制实战
1. 创建Admin控制器,加载form_validation库校验账号密码;
2. 登录成功后用$this->session->set_userdata(['logged_in' => TRUE, 'username' => $row->username])存会话;
3. 在每个后台操作方法开头加判断:if (!$this->session->has_userdata('logged_in')) { redirect('admin/login'); };
这一步不能省——CI不内置中间件机制,权限逻辑必须手动写进每个需要保护的方法里,否则访客能直接GET到/post/edit/1绕过登录。
扩展评论与搜索功能的瓶颈点
添加评论模块时发现:CI默认没有ORM关联查询,要查“文章+作者+最新3条评论”,得手写三条$query->join(),或者拼接SQL字符串——【Model层仅封装了基本CURD,复杂关联需自行组装】。
做全文搜索时更明显:MySQL LIKE效率低,想换Elasticsearch就得自己写适配器,CI没提供驱动接口;而ThinkPHP有Searchable trait,Laravel有Scout包,CI只能硬编码HTTP请求调ES API。
静态缓存可用output->cache(60),但页面级缓存无法按用户角色区分——登录态用户看到“编辑”按钮,游客看不到,这个逻辑没法靠缓存键自动分离,必须在视图里用if判断再输出。

















