在 CodeIgniter(CI)框架中,有许多经典的操作类可以帮助开发者快速实现常见的功能,如路由配置、伪静态、分页、Session 管理、验证码生成等。以下是对这些常用操作类的总结和示例。
1. 路由(Routing)
路由是 CodeIgniter 中用于将 URL 映射到控制器和方法的重要功能。通过路由配置,可以实现 URL 的美化和自定义。
配置路由
在 application/config/routes.php
文件中配置路由规则。
$route['default_controller'] = 'home'; // 默认控制器$route['404_override'] = ''; // 404 页面$route['translate_uri_dashes'] = FALSE; // 是否将 URI 中的下划线转换为中划线// 自定义路由$route['product/(:num)'] = 'catalog/product_lookup/$1'; // 将 product/123 映射到 catalog/product_lookup/123$route['blog/(:any)'] = 'blog/view/$1'; // 将 blog/abc 映射到 blog/view/abc
示例:自定义路由
$route['login'] = 'auth/login'; // 将 /login 映射到 auth 控制器的 login 方法$route['user/profile/(:num)'] = 'user/profile/$1'; // 将 /user/profile/1 映射到 user/profile/1
2. 伪静态(URL Rewrite)
伪静态是通过 URL 重写技术将动态 URL 转换为静态 URL,以提高 SEO 效果和用户体验。
启用伪静态
在
application/config/config.php
中设置:$config['index_page'] = ''; // 去掉 index.php
在服务器(如 Apache)中配置
.htaccess
文件:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
示例:伪静态 URL
动态 URL:
http://example.com/index.php/product/view/123
伪静态 URL:
http://example.com/product/view/123
3. 分页(Pagination)
分页是处理大量数据时的常用功能。CodeIgniter 提供了强大的分页类来简化分页操作。
配置分页
在控制器中加载分页库并配置分页参数。
$this->load->library('pagination');$config['base_url'] = site_url('product/list'); // 分页链接$config['total_rows'] = 200; // 总记录数$config['per_page'] = 10; // 每页显示记录数$config['uri_segment'] = 3; // URI 分段$this->pagination->initialize($config);$data['pagination_links'] = $this->pagination->create_links();
在视图中显示分页链接
echo $data['pagination_links'];
4. Session 管理
Session 是用于在不同页面之间存储用户数据的机制。CodeIgniter 提供了 Session 类来管理会话数据。
配置 Session
在 application/config/config.php
中配置 Session 参数。
$config['sess_driver'] = 'files'; // Session 驱动(files/database/redis)$config['sess_save_path'] = NULL; // 保存路径$config['sess_expiration'] = 7200; // Session 过期时间(秒)
使用 Session
$this->load->library('session');// 设置 Session 数据$this->session->set_userdata('username', 'john_doe');// 获取 Session 数据$username = $this->session->userdata('username');// 删除 Session 数据$this->session->unset_userdata('username');// 销毁 Session$this->session->sess_destroy();
5. 验证码(CAPTCHA)
验证码是用于防止机器人提交表单的常用工具。CodeIgniter 提供了验证码库来生成和验证验证码。
生成验证码
在控制器中加载验证码库并生成验证码:
$this->load->helper('captcha');$vals = array( 'word' => rand(1000, 9999), // 验证码内容 'img_path' => './captcha/', // 图片保存路径 'img_url' => base_url('captcha/'), // 图片访问路径 'font_path' => './path/to/fonts/texb.ttf', // 字体路径 'img_width' => 150, 'img_height' => 30, 'expiration' => 7200 // 过期时间);$cap = create_captcha($vals);$data['captcha_image'] = $cap['image']; // 验证码图片$this->session->set_userdata('captcha_word', $cap['word']); // 保存验证码到 Session
在视图中显示验证码:
echo $data['captcha_image'];
验证验证码
$user_input = $this->input->post('captcha'); // 用户输入的验证码$captcha_word = $this->session->userdata('captcha_word'); // 正确的验证码if ($user_input === $captcha_word) { echo '验证码正确!';} else { echo '验证码错误!';}
6. 文件上传
文件上传是 Web 应用中常见的功能。CodeIgniter 提供了文件上传类来简化文件上传操作。
配置上传
在控制器中加载上传库并配置上传参数。
$this->load->library('upload');$config['upload_path'] = './uploads/'; // 上传路径$config['allowed_types'] = 'gif|jpg|png'; // 允许的文件类型$config['max_size'] = 2048; // 文件大小限制(KB)$this->upload->initialize($config);if ($this->upload->do_upload('userfile')) { // userfile 是文件字段名 $data = $this->upload->data(); // 上传成功} else { $error = $this->upload->display_errors(); // 上传失败}
7. 表单验证
表单验证是确保用户输入数据合法性的重要步骤。CodeIgniter 提供了表单验证类来简化验证操作。
配置验证规则
$this->load->library('form_validation');$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]');$this->form_validation->set_rules('password', 'Password', 'required');if ($this->form_validation->run() == FALSE) { // 验证失败} else { // 验证成功}
总结
CodeIgniter 提供了丰富的操作类来简化常见功能的开发,包括:
路由:自定义 URL 映射。
伪静态:美化 URL。
分页:处理大量数据的分页显示。
Session:管理用户会话数据。
验证码:防止机器人提交表单。
文件上传:处理文件上传。
表单验证:确保用户输入数据的合法性。
通过掌握这些经典操作类,可以显著提高开发效率并构建功能强大的 Web 应用。
本文关键词: CI 框架 常用 经典 操作 总结
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, LeCMS, ClassCMS, Fastadmin, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。