CodeIgniter学习笔记 Item6--CI中的常规主题
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['subclass_prefix'] = 'MY_';
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('user/index4'); ?> 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['default_controller'] = 'welcome'; $route['404_override'] = '';
更重要的功能是,如果我们要实现通过/index.php/news/4.html访问/index.php/article/show/1这样一个需求,可以在routes.php定义路由关系,将原始的URL转换成需要样式
[code]$route['news/([\d]+)\.html] = 'article/show/$1';
这样对于所有负责正则表达式的URL,都会路由到新的路径,其中$1
表示正则表达式中的第一个
用()括起来的部分
4.CI中的分页
首先加载分页类
[code]$this->load->library('pagination');
然后设置分页属性
[code]// 每页显示的数量 $config['page_size'] = 10; // 总数据量 $config['total_rows'] = 200; // 设置分页跳转页面的基础地址 $config['base_url'] = site_url('index.php/user/test'); // 设置分页显示文字 $config['first_link'] = '首页'; $config['next_link'] = '下一页'; $config['prev_link'] = '上一页'; $config['last_link'] = '末页';
初始化分页类
[code]$this->pagination->initialize($config);
创建链接并传递给视图
[code]$data['links'] = $this->pagination->create_links(); $this->load->view('test', $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('url'); $this->load->view('file'); }
在视图中创建一个表单用于选择并上传文件
[code]<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action="<?php echo site_url('index.php/user/upload'); ?>" 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['upload_path'] = './upload'; // 允许上传哪些类型 $config['allowed_types'] = 'gif|png|jpg|jpeg'; // 上传后的文件名,用uniqid()保证文件名唯一 $config['file_name'] = uniqid(); // 加载上传库 $this->load->library('upload', $config); // 上传文件,这里的pic是视图中file控件的name属性 $result = $this->upload->do_upload('pic'); // 如果上传成功,获取上传文件的信息 if ($result) { var_dump($this->upload->data()); } }
这样就完成文件上传了
6.CI中的Session
CI默认没有启动Session,而是用Cookie代替Session,首先Cookie只能保存4KB的数据,其次,在Session中保存数据马上就可以获取到,而Cookie中的数据要等到下次客户端请求时才能获取到。
首先加载Session类
[code]$this->load->library('session');
然后通过set_userdata方法以键值对或关联数组的方式保存数据
[code]$user = array('id' => 3, 'name'=>'dj'); $this->session->set_userdata('user', $user);
用userdata方法获取数据
[code]$user = $this->session->userdata('user');
用unset_userdata方法删除数据
[code]$this->session->unset_userdata('user');
如果要保存的数据只需要用一次,可以使用闪出数据,这种数据只对下次服务器请求可用,然后会自动清除,闪出数据用set_flashdata()方法设置
[code]$this->session->set_flashdata('user', $user);
7.CI中的验证码
首先需要在入口文件的同级目录文件夹用于保存验证码图片,比如新建captcha目录
加载captcha辅助类
[code]$this->load->helper('captcha');
调用create_captcha函数生成验证码图片
[code]$this->load->helper('url'); $vals = array ( // 验证码文字,默认是8位随机字符串 'word' => 'Random word', // 图片保存路径 'img_path' => './captcha/', // 基础目录URL 'img_url' => base_url() . './captcha', // 图片中的字体使用的字体文件 'font_path' => './path/to/fonts/texb.ttf', // 图片大小 'img_width' => '150', 'img_height' => 30, // 指定了验证码图片的超时删除时间(秒),默认2小时 'expiration' => 30 ); $cap = create_captcha($vals);
此外,还可以设置字符串长度、颜色、字体大小、可选字符,返回值包括了生成图片的名称、完整的img标签、验证码字符串
由于CI不是PHP的session,因此对于验证码的验证过程可以直接使用PHP的session进行保存
[code]session_start(); $_SESSION['cap'] = $cap['word'];
然后使用用户的输入与session中的值进行比较就可以了
以上就是CodeIgniter学习笔记 Item6--CI中的常规主题的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Cara melaksanakan middleware tersuai dalam CodeIgniter Pengenalan: Dalam pembangunan web moden, middleware memainkan peranan penting dalam aplikasi. Ia boleh digunakan untuk melaksanakan beberapa logik pemprosesan yang dikongsi sebelum atau selepas permintaan sampai kepada pengawal. CodeIgniter, sebagai rangka kerja PHP yang popular, juga menyokong penggunaan middleware. Artikel ini akan memperkenalkan cara untuk melaksanakan perisian tengah tersuai dalam CodeIgniter dan memberikan contoh kod mudah. Gambaran keseluruhan Middleware: Middleware ialah sejenis permintaan

CodeIgniter Middleware: Mempercepatkan Responsif Aplikasi dan Gambaran Keseluruhan Pemberian Halaman: Memandangkan aplikasi web terus berkembang dalam kerumitan dan interaktiviti, pembangun perlu menggunakan penyelesaian yang lebih cekap dan berskala untuk meningkatkan prestasi dan responsif aplikasi. CodeIgniter (CI) ialah rangka kerja berasaskan PHP ringan yang menyediakan banyak ciri berguna, salah satunya ialah perisian tengah. Middleware ialah satu siri tugasan yang dilakukan sebelum atau selepas permintaan sampai kepada pengawal. Artikel ini akan memperkenalkan cara menggunakan

Pengenalan kepada kaedah menggunakan pembina pertanyaan pangkalan data (QueryBuilder) dalam rangka kerja CodeIgniter: CodeIgniter ialah rangka kerja PHP ringan yang menyediakan banyak alat dan perpustakaan yang berkuasa untuk memudahkan pembangun dalam pembangunan aplikasi web. Salah satu ciri yang paling mengagumkan ialah pembina pertanyaan pangkalan data (QueryBuilder), yang menyediakan cara ringkas dan berkuasa untuk membina dan melaksanakan pernyataan pertanyaan pangkalan data. Artikel ini akan memperkenalkan cara menggunakan Co

CodeIgniter ialah rangka kerja PHP ringan yang menggunakan seni bina MVC untuk menyokong pembangunan pesat dan memudahkan tugas biasa. CodeIgniter5 ialah versi rangka kerja terkini dan menawarkan banyak ciri dan penambahbaikan baharu. Artikel ini akan memperkenalkan cara menggunakan rangka kerja CodeIgniter5 untuk membina aplikasi web mudah. Langkah 1: Pasang CodeIgniter5 Memuat turun dan memasang CodeIgniter5 adalah sangat mudah, cuma ikut langkah berikut: Muat turun versi terkini

Memandangkan aplikasi web terus berkembang, adalah penting untuk membangunkan aplikasi dengan lebih cepat dan cekap. Dan, memandangkan API RESTful digunakan secara meluas dalam aplikasi web, pembangun perlu memahami cara mencipta dan melaksanakan API RESTful. Dalam artikel ini, kita akan membincangkan cara untuk melaksanakan corak MVC dan API RESTful menggunakan rangka kerja CodeIgniter. Pengenalan kepada corak MVC MVC (Model-Vie

Perisian tengah CodeIgniter: Menyediakan fungsi muat naik dan muat turun fail yang selamat Pengenalan: Dalam proses pembangunan aplikasi web, muat naik dan muat turun fail adalah fungsi yang sangat biasa. Walau bagaimanapun, atas sebab keselamatan, pengendalian muat naik dan muat turun fail selalunya memerlukan langkah keselamatan tambahan. CodeIgniter ialah rangka kerja PHP popular yang menyediakan pelbagai alatan dan perpustakaan untuk menyokong pembangun dalam membina aplikasi web yang selamat dan boleh dipercayai. Artikel ini akan memperkenalkan cara menggunakan perisian tengah CodeIgniter untuk melaksanakan fail selamat

Dengan perkembangan Internet mudah alih, pemesejan segera telah menjadi lebih penting dan popular. Bagi kebanyakan syarikat, sembang langsung lebih seperti perkhidmatan komunikasi, menyediakan kaedah komunikasi yang mudah yang boleh menyelesaikan masalah perniagaan dengan cepat dan berkesan. Berdasarkan ini, artikel ini akan memperkenalkan cara menggunakan rangka kerja PHP CodeIgniter untuk membangunkan aplikasi sembang masa nyata. Fahami rangka kerja CodeIgniter CodeIgniter ialah rangka kerja PHP ringan yang menyediakan satu siri alat dan perpustakaan mudah untuk membantu pembangun dengan cepat

Dalam era Internet hari ini, tapak web yang disukai oleh pengguna mesti mempunyai antara muka bahagian hadapan yang ringkas dan jelas serta sistem pengurusan bahagian belakang yang berkuasa, dan rangka kerja PHP CodeIgniter ialah rangka kerja yang sangat baik yang membolehkan pembangun membina bahagian belakang dengan cepat. sistem pengurusan. CodeIgniter mempunyai ciri-ciri ringan, kecekapan tinggi, dan pengembangan yang mudah Artikel ini akan ditujukan kepada pemula dan menerangkan secara terperinci cara membina sistem pengurusan bahagian belakang dengan cepat melalui rangka kerja ini. 1. Pemasangan dan konfigurasi Pemasangan PHPCodeIgniter adalah berasaskan PHP
