php教程 PHP开发 CodeIgniter 연구 노트 항목 6--CI의 일반 주제

CodeIgniter 연구 노트 항목 6--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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

CodeIgniter에서 사용자 정의 미들웨어를 구현하는 방법 CodeIgniter에서 사용자 정의 미들웨어를 구현하는 방법 Jul 29, 2023 am 10:53 AM

CodeIgniter에서 사용자 정의 미들웨어를 구현하는 방법 소개: 현대 웹 개발에서 미들웨어는 애플리케이션에서 중요한 역할을 합니다. 요청이 컨트롤러에 도달하기 전이나 후에 일부 공유 처리 논리를 수행하는 데 사용할 수 있습니다. 널리 사용되는 PHP 프레임워크인 CodeIgniter는 미들웨어 사용도 지원합니다. 이 글에서는 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 프레임워크입니다. 가장 인상적인 기능 중 하나는 데이터베이스 쿼리 문을 작성하고 실행하는 간결하고 강력한 방법을 제공하는 데이터베이스 쿼리 빌더(QueryBuilder)입니다. 이번 글에서는 Co 사용법을 소개하겠습니다.

PHP에서 CodeIgniter5 프레임워크를 사용하는 방법은 무엇입니까? PHP에서 CodeIgniter5 프레임워크를 사용하는 방법은 무엇입니까? Jun 01, 2023 am 11:21 AM

CodeIgniter는 MVC 아키텍처를 사용하여 신속한 개발을 지원하고 일반적인 작업을 단순화하는 경량 PHP 프레임워크입니다. CodeIgniter5는 프레임워크의 최신 버전이며 많은 새로운 기능과 개선 사항을 제공합니다. 이 기사에서는 CodeIgniter5 프레임워크를 사용하여 간단한 웹 애플리케이션을 구축하는 방법을 소개합니다. 1단계: CodeIgniter5 설치 CodeIgniter5 다운로드 및 설치는 매우 간단합니다. 다음 단계를 따르십시오. 최신 버전을 다운로드하세요.

PHP 개발: CodeIgniter를 사용하여 MVC 패턴 및 RESTful API 구현 PHP 개발: CodeIgniter를 사용하여 MVC 패턴 및 RESTful API 구현 Jun 16, 2023 am 08:09 AM

웹 애플리케이션이 계속 발전함에 따라 애플리케이션을 보다 빠르고 효율적으로 개발하는 것이 중요합니다. 그리고 RESTful API는 웹 애플리케이션에서 널리 사용되기 때문에 개발자는 RESTful API를 생성하고 구현하는 방법을 이해하는 것이 필요합니다. 이번 글에서는 CodeIgniter 프레임워크를 사용하여 MVC 패턴과 RESTful API를 구현하는 방법에 대해 설명합니다. MVC 패턴 MVC 소개(Model-Vie

CodeIgniter 미들웨어: 안전한 파일 업로드 및 다운로드 기능 제공 CodeIgniter 미들웨어: 안전한 파일 업로드 및 다운로드 기능 제공 Aug 01, 2023 pm 03:01 PM

CodeIgniter 미들웨어: 안전한 파일 업로드 및 다운로드 기능 제공 소개: 파일 업로드 및 다운로드는 웹 애플리케이션 개발 중에 매우 일반적인 기능입니다. 그러나 보안상의 이유로 파일 업로드 및 다운로드를 처리하려면 추가 보안 조치가 필요한 경우가 많습니다. CodeIgniter는 개발자가 안전하고 안정적인 웹 애플리케이션을 구축할 수 있도록 지원하는 풍부한 도구와 라이브러리를 제공하는 인기 있는 PHP 프레임워크입니다. 이 기사에서는 CodeIgniter 미들웨어를 사용하여 보안 파일을 구현하는 방법을 소개합니다.

PHP 프레임워크인 CodeIgniter를 활용하여 실시간 채팅 애플리케이션을 개발하여 편리한 커뮤니케이션 서비스를 제공합니다. PHP 프레임워크인 CodeIgniter를 활용하여 실시간 채팅 애플리케이션을 개발하여 편리한 커뮤니케이션 서비스를 제공합니다. Jun 27, 2023 pm 02:49 PM

모바일 인터넷의 발전으로 인스턴트 메시징이 점점 더 중요해지고 대중화되었습니다. 많은 기업에서 라이브 채팅은 비즈니스 문제를 빠르고 효과적으로 해결할 수 있는 편리한 커뮤니케이션 방법을 제공하는 커뮤니케이션 서비스에 가깝습니다. 이를 바탕으로 이 기사에서는 PHP 프레임워크 CodeIgniter를 사용하여 실시간 채팅 애플리케이션을 개발하는 방법을 소개합니다. CodeIgniter 프레임워크 이해 CodeIgniter는 개발자가 빠르게 작업할 수 있도록 일련의 간단한 도구와 라이브러리를 제공하는 경량 PHP 프레임워크입니다.

PHP 프레임워크 CodeIgniter를 사용하여 백엔드 관리 시스템을 빠르게 구축하는 방법 PHP 프레임워크 CodeIgniter를 사용하여 백엔드 관리 시스템을 빠르게 구축하는 방법 Jun 27, 2023 am 09:46 AM

오늘날의 인터넷 시대에 사용자에게 사랑받는 웹사이트는 간단하고 명확한 프론트엔드 인터페이스와 강력한 백엔드 관리 시스템을 갖춰야 하는데, PHP 프레임워크인 CodeIgniter는 개발자가 빠르게 백엔드를 구축할 수 있는 탁월한 프레임워크입니다. 관리 시스템. CodeIgniter는 경량, 고효율, 쉬운 확장이라는 특징을 가지고 있습니다. 이 글은 초보자를 대상으로 하며 이 프레임워크를 통해 백엔드 관리 시스템을 빠르게 구축하는 방법을 자세히 설명합니다. 1. 설치 및 구성 PHPCodeIgniter 설치는 PHP 기반입니다.

See all articles