首页 php教程 PHP开发 CodeIgniter学习笔记 Item6--CI中的常规主题

CodeIgniter学习笔记 Item6--CI中的常规主题

Dec 29, 2016 am 10:30 AM

1. 扩展控制器

CI的控制器默认继承自CI_Controller
,如果要扩展控制器,需要定义一个从CI_Controller
派生的控制器,所有的自定义控制器都继承这个新控制器。

在application/core目录下,有与system目录下类似的目录结构,比如core、helpers、language、libraries目录,扩展控制器就是在application/core目录下自定义控制器,该控制器类从CI_Controller继承,类似的,如果要扩展系统的功能,就在application下的对应目录新增自定义类,从系统类继承。

[code]<?php     
class My_Controller extends CI_Controller     

{             
function __construct()         
{             
parent::__construct();             
echo "自定义控制器";             
// 权限验证...             
// 登录验证...         
}    
 } 
 ?>
登录后复制


之后,将所有添加的控制器都从MY_Controller
派生,通过在MY_Controller
中重写父类方法来实现扩展控制器。

在application/config/config.php文件中,有这样一个配置项

[code]$config[&#39;subclass_prefix&#39;] = &#39;MY_&#39;;
登录后复制

CI在查找扩展类,会根据这里的前缀去查找并包含定义类文件,此处前缀不区分大小写

2. CI中的URL

当PHP程序部署在服务器上时,用户会将程序安装到指定目录,程序员无法预先知道用户会安装到哪个目录,因此对于代码中出现的URL不能写死,需要通过URL辅助函数动态获取,在使用函数前需要先加载URL辅助函数库($this->load->helper('url'))
或配置/application/config/autoload.php自动加载。

site_url()
:返回以config.php中指定的base_url
和index.php,还有传递给函数的URL段参数拼接成的字符串

[code]<!DOCTYPE html>
 <html> 
 <head>    
 <meta charset="UTF-8">     
 <title>Document</title> 
 </head> 
 <body>     
 <form action=<?php echo site_url(&#39;user/index4&#39;); ?> method="post">         
 name:<input type="text" name="name" /><br />         
 password:<input type="text" name="password"><br />         
 <input type="submit" name="submit" value="submit" />     
 </form> 
 </body> 
 </html>
登录后复制

base_url():返回项目的基础目录

[code]<img src="<?php echo base_url(); ?>upload/qe.jpg">
登录后复制

current_url():返回当前查看页面的完整URL

3.CI中的路由

路由用于配置针对某些URL与项目中实际文件的对应关系,是的URL看起来更符合用户的习惯,又不用改变项目现有的结构,路由的配置文件是/application/config/routes.php,可以设置默认控制器和404错误页面

[code]$route[&#39;default_controller&#39;] = &#39;welcome&#39;; $route[&#39;404_override&#39;] = &#39;&#39;;
登录后复制

更重要的功能是,如果我们要实现通过/index.php/news/4.html访问/index.php/article/show/1这样一个需求,可以在routes.php定义路由关系,将原始的URL转换成需要样式

[code]$route[&#39;news/([\d]+)\.html] = &#39;article/show/$1&#39;;
登录后复制

这样对于所有负责正则表达式的URL,都会路由到新的路径,其中$1
表示正则表达式中的第一个

用()括起来的部分

4.CI中的分页

首先加载分页类

[code]$this->load->library(&#39;pagination&#39;);
登录后复制

然后设置分页属性

[code]// 每页显示的数量 
$config[&#39;page_size&#39;] = 10; 
// 总数据量 
$config[&#39;total_rows&#39;] = 200; 
// 设置分页跳转页面的基础地址 
$config[&#39;base_url&#39;] = site_url(&#39;index.php/user/test&#39;); 
// 设置分页显示文字 
$config[&#39;first_link&#39;] = &#39;首页&#39;; 
$config[&#39;next_link&#39;] = &#39;下一页&#39;; 
$config[&#39;prev_link&#39;] = &#39;上一页&#39;; 
$config[&#39;last_link&#39;] = &#39;末页&#39;;
登录后复制

初始化分页类

[code]$this->pagination->initialize($config);
登录后复制

创建链接并传递给视图

[code]$data[&#39;links&#39;] = $this->pagination->create_links(); $this->load->view(&#39;test&#39;, $data);
登录后复制

通过URL获取偏移量拼装查询

[code]$offset = (int)$this->load->uri->segment(3); $sql = "SELECT * FROM blog_user limit $offset, $page_size";
登录后复制

5.CI中的文件上传

首先通过控制器的方法跳转至视图

[code]public function file() {     $this->load->helper(&#39;url&#39;);     $this->load->view(&#39;file&#39;); }
登录后复制

在视图中创建一个表单用于选择并上传文件

[code]<!DOCTYPE html> 
<html> 
<head>     
<meta charset="UTF-8">     
<title>Document</title> 
</head> 
<body>     
<form action="<?php echo site_url(&#39;index.php/user/upload&#39;); ?>" method="post" enctype="multipart/form-data">         
<input type="file" name="pic" />         
<input type="submit" name="submit" value="submit">     
</form> 
</body> 
</html>
登录后复制

其中,要注意第一个input的name属性,这个属性后面要用,在表单中将action设置为一个控制器方法,编写对应的控制器方法

[code]
public function upload() 
{     
// 上传文件到服务器目录     
$config[&#39;upload_path&#39;] = &#39;./upload&#39;;     
// 允许上传哪些类型     
$config[&#39;allowed_types&#39;] = &#39;gif|png|jpg|jpeg&#39;;     
// 上传后的文件名,用uniqid()保证文件名唯一     
$config[&#39;file_name&#39;] = uniqid();     
// 加载上传库     
$this->load->library(&#39;upload&#39;, $config);     
// 上传文件,这里的pic是视图中file控件的name属性     
$result = $this->upload->do_upload(&#39;pic&#39;);     
// 如果上传成功,获取上传文件的信息     
if ($result)      
{         
var_dump($this->upload->data());     
} 
}
登录后复制

这样就完成文件上传了

6.CI中的Session

CI默认没有启动Session,而是用Cookie代替Session,首先Cookie只能保存4KB的数据,其次,在Session中保存数据马上就可以获取到,而Cookie中的数据要等到下次客户端请求时才能获取到。

首先加载Session类

[code]$this->load->library(&#39;session&#39;);
登录后复制

然后通过set_userdata方法以键值对或关联数组的方式保存数据

[code]$user = array(&#39;id&#39; => 3, &#39;name&#39;=>&#39;dj&#39;); $this->session->set_userdata(&#39;user&#39;, $user);
登录后复制

用userdata方法获取数据

[code]$user = $this->session->userdata(&#39;user&#39;);
登录后复制

用unset_userdata方法删除数据

[code]$this->session->unset_userdata(&#39;user&#39;);
登录后复制

如果要保存的数据只需要用一次,可以使用闪出数据,这种数据只对下次服务器请求可用,然后会自动清除,闪出数据用set_flashdata()方法设置

[code]$this->session->set_flashdata(&#39;user&#39;, $user);
登录后复制

7.CI中的验证码

首先需要在入口文件的同级目录文件夹用于保存验证码图片,比如新建captcha目录

加载captcha辅助类

[code]$this->load->helper(&#39;captcha&#39;);
登录后复制

调用create_captcha函数生成验证码图片

[code]$this->load->helper(&#39;url&#39;); 
$vals = array     
(        
 // 验证码文字,默认是8位随机字符串         
 &#39;word&#39; => &#39;Random word&#39;,         
 // 图片保存路径         
 &#39;img_path&#39; => &#39;./captcha/&#39;,         
 // 基础目录URL         
 &#39;img_url&#39; => base_url() . &#39;./captcha&#39;,         
 // 图片中的字体使用的字体文件         
 &#39;font_path&#39; => &#39;./path/to/fonts/texb.ttf&#39;,         
 // 图片大小         
 &#39;img_width&#39; => &#39;150&#39;,         
 &#39;img_height&#39; => 30,         
 // 指定了验证码图片的超时删除时间(秒),默认2小时         
 &#39;expiration&#39; => 30     ); 
 $cap = create_captcha($vals);
登录后复制

此外,还可以设置字符串长度、颜色、字体大小、可选字符,返回值包括了生成图片的名称、完整的img标签、验证码字符串

由于CI不是PHP的session,因此对于验证码的验证过程可以直接使用PHP的session进行保存

[code]session_start(); $_SESSION[&#39;cap&#39;] = $cap[&#39;word&#39;];
登录后复制

然后使用用户的输入与session中的值进行比较就可以了

 以上就是CodeIgniter学习笔记 Item6--CI中的常规主题的内容,更多相关内容请关注PHP中文网(www.php.cn)!


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1274
29
C# 教程
1256
24
如何在CodeIgniter中实现自定义中间件 如何在CodeIgniter中实现自定义中间件 Jul 29, 2023 am 10:53 AM

如何在CodeIgniter中实现自定义中间件引言:在现代的Web开发中,中间件在应用程序中起着至关重要的作用。它们可以用来执行在请求到达控制器之前或之后执行一些共享的处理逻辑。CodeIgniter作为一个流行的PHP框架,也支持中间件的使用。本文将介绍如何在CodeIgniter中实现自定义中间件,并提供一个简单的代码示例。中间件概述:中间件是一种在请求

CodeIgniter中间件:加速应用程序的响应速度和页面渲染 CodeIgniter中间件:加速应用程序的响应速度和页面渲染 Jul 28, 2023 pm 06:51 PM

CodeIgniter中间件:加速应用程序的响应速度和页面渲染概述:随着网络应用程序的复杂性和交互性不断增长,开发人员需要使用更加高效和可扩展的解决方案来提高应用程序的性能和响应速度。CodeIgniter(CI)是一种基于PHP的轻量级框架,提供了许多有用的功能,其中之一就是中间件。中间件是在请求到达控制器之前或之后执行的一系列任务。这篇文章将介绍如何使用

在CodeIgniter框架中使用数据库查询构建器(Query Builder)的方法 在CodeIgniter框架中使用数据库查询构建器(Query Builder)的方法 Jul 28, 2023 pm 11:13 PM

在CodeIgniter框架中使用数据库查询构建器(QueryBuilder)的方法引言:CodeIgniter是一个轻量级的PHP框架,它提供了许多功能强大的工具和库,方便开发人员进行Web应用程序开发。其中一个令人印象深刻的功能是数据库查询构建器(QueryBuilder),它提供了一种简洁而强大的方法来构建和执行数据库查询语句。本文将介绍如何在Co

PHP开发:使用 CodeIgniter 实现 MVC 模式和 RESTful API PHP开发:使用 CodeIgniter 实现 MVC 模式和 RESTful API Jun 16, 2023 am 08:09 AM

随着Web应用程序的不断发展,更加快速和高效地开发应用程序变得非常重要。并且,随着RESTfulAPI在Web应用程序中的广泛应用,对于开发人员来说,必须理解如何创建和实现RESTfulAPI。在本文中,我们将讨论如何使用CodeIgniter框架实现MVC模式和RESTfulAPI。MVC模式简介MVC(Model-Vie

使用PHP框架CodeIgniter开发一个实时聊天应用,提供便捷的通讯服务 使用PHP框架CodeIgniter开发一个实时聊天应用,提供便捷的通讯服务 Jun 27, 2023 pm 02:49 PM

随着移动互联网的发展,即时通信变得越来越重要,越来越普及。对于很多企业而言,实时聊天更像是一种通信服务,提供便捷的沟通方式,可以快速有效地解决业务方面的问题。基于此,本文将介绍如何使用PHP框架CodeIgniter开发一个实时聊天应用。了解CodeIgniter框架CodeIgniter是一个轻量级的PHP框架,提供了一系列的简便的工具和库,帮助开发者快速

php如何使用CodeIgniter5框架? php如何使用CodeIgniter5框架? Jun 01, 2023 am 11:21 AM

CodeIgniter是一个轻量级的PHP框架,采用MVC架构,支持快速开发和简化常见任务。CodeIgniter5是该框架的最新版本,提供了许多新的特性和改进。本文将介绍如何使用CodeIgniter5框架来构建一个简单的Web应用程序。步骤1:安装CodeIgniter5下载和安装CodeIgniter5非常简单,只需要遵循以下步骤:下载最新版本

CodeIgniter中间件:提供安全的文件上传和下载功能 CodeIgniter中间件:提供安全的文件上传和下载功能 Aug 01, 2023 pm 03:01 PM

CodeIgniter中间件:提供安全的文件上传和下载功能引言:在Web应用程序开发过程中,文件上传和下载是非常常见的功能。然而,对于安全性的考虑,处理文件上传和下载通常需要额外的安全措施。CodeIgniter是一个流行的PHP框架,提供了丰富的工具和库来支持开发者构建安全可靠的Web应用程序。本文将介绍如何使用CodeIgniter中间件来实现安全的文件

php如何使用CodeIgniter\Config进行配置管理? php如何使用CodeIgniter\Config进行配置管理? Jun 02, 2023 pm 06:01 PM

一、CodeIgniter简介CodeIgniter是一个轻量级且全面的PHP开发框架,旨在为Web开发人员提供快速且强大的工具来构建Web应用程序。它是一个开源的框架,使用MVC架构模式来实现快速开发和基础功能,同时支持多种数据库。二、Config库简介Config库是CodeIgniter框架中的一个组件,用于对代码进行配置管理。Config库包含了很多

See all articles