首頁 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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 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教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1249
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在網路應用程式中的廣泛應用,對於開發人員來說,必須理解如何建立和實作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中間件:提供安全的檔案上傳和下載功能引言:在網路應用程式開發過程中,檔案上傳和下載是非常常見的功能。然而,對於安全性的考慮,處理文件上傳和下載通常需要額外的安全措施。 CodeIgniter是一個流行的PHP框架,提供了豐富的工具和函式庫來支援開發者建立安全可靠的網路應用程式。本文將介紹如何使用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