CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)


Posted in PHP onNovember 21, 2016

本文实例总结了CI框架常用经典操作类。分享给大家供大家参考,具体如下:

1. 超级对象中的URI

CI_URI类的解析url的相关信息

直接使用$this->uri可以使用它的相关属性

system/core/URI.php文件中

部分常用属性:

(1) 分段获取url相关信息

$this->uri->segment(4);
//获取url中pathinfo
//的第四段的值

入口文件.php/控制器/动作/参数1/参数2/...

(2) 通过方法中的形参传参

需要设默认值和顺序要注意

index.php/user/index/3/zhangsan

public function index($id=0,$name=''){
  echo $id,$name;
}

2.CI控制器的扩展

在application/core/文件夹下面

添加自己的扩展控制器

class MY_Controller extends CI_Controller{
  public function __construct(){
   parent::__construct
  }
}

配置模型前缀

$config['subclass_prefix']='MY_';//默认值

3.模型的相关操作

文件名全小写,类名首字母大写

建议类名加上 _model后缀

在控制器中加载模型:

在construct中加入:

$this->load->model('User_model');
$this->User_model->get();

为模型起别名

$this->load->model('User_model','user');
$this->user->get();

4.url中的常用函数

(1)帮助我们生成控制器

$this->load->helper('url');
site_url('控制器/方法');

(2)图片路径的使用

$this->load->helper('url');
<img src="<?php echo base_url();?>upload/a.jpg" />

可以在autoload.php中配置自动加载

$autoload['helper']加入url

5. CI中的路由与伪静态

(1) 路由伪静态

$router['show/([\d]+)\.html']='article/show/$1';
article/show/5.html => article/show/5;

(2) 隐藏入口文件

#开启apache的rewrite模块
#在根目录中放入.htaccess文件进行重写
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

6. CI中的分页

//模型中操作
//装载分页类文件
$this->load->library('pagination');
$this->load->helper(url);
//分页链接
$config['base_url'] = site_url('user/test');
//总记录条数
$config['total_rows'] = 100;
//每页显示10条数据
$config['per_page'] = 10;
//偏移量
$offset_limit = intval($this->uri->segment(3));
$this->pagination->initialize($config);
echo $this->pagination->create_links();

分页中按钮的定制(注意在初始化之前配置好)

$config['first_link'] = '首页';
...
$config['uri_segment'] =3;//分页数据查询偏移量

在url的哪一段上,对应上面的$offset

默认是3,否则需要修改对应值

7. CI 中session的使用

//加载session库
$this->load->library('session');

(1)获取系统session

//比如获取客户端的ip地址
$this->session->userdata('ip_address');

(2) 添加自定义session

//添加
$this->session->set_userdata('some_name', 'some_value');
//获取
$this->session->userdata('some_name');
//删除
$this->session->unset_userdata('some_name');

(3)闪出数据 (取出一次后失效)

//添加
$this->session->set_flashdata('item', 'value');
//获取
$this->session->flashdata('item');

登录数据中 返回登录前的那一个页面的url可以记录下来,

注意:一次性的数据,读取一次后会自动销毁。

为了确保安全,在config.php生成随机加密的字符串中加入

$config['encryption_key']="fjkdsffjkhjd#kjh";

是否要将cookie加密

$config['sess_encrypt_cookie'] =TRUE;

8. CI中的文件上传

<form action="<?php echo site_url('user/upload');?>" enctype="multipart/form-data">
 <input type="file" name="pic"/>
 <input type="submit" value="submit">
</form>

上传处理:

$config['upload_path']="./upload";
$config['allowed_types']='gif|jpeg|jpg';
$this->load->library('upload',$config);
$this->upload->do_upload('pic');

文件上传的数据

$filedata = $this->upload->data();

9. CI中的验证码

//生成验证码
$this->load->helper('captcha');
$this->load->helper('url');
$vals = array(
  'word'=>rand(1000,9999),
  'img_path'=>'./captcha/',
  'img_url'=>base_url().'/captcha/'
  'img_width'=>'150',
  'img_height'=>'100',
  'expiration'=>7200
);
$cap = create_captcha($vals);
echo $cap['image'];
//将验证码获取的数字放在session中
session_start();
$_SESSION['cap'] = $cap['word'];

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php缓存技术介绍
Nov 25 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
Jun 25 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
Jan 22 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
Aug 14 PHP
PHP中你应该知道的require()文件包含的正确用法
Jun 12 PHP
PHP实现抓取迅雷VIP账号的方法
Jul 30 PHP
smarty自定义函数用法示例
May 20 PHP
PHP实现文件上传功能实例代码
May 18 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
Yii2处理密码加密及验证的方法
May 12 PHP
mysqli扩展无法在PHP7下升级问题的解决
Sep 10 PHP
php面向对象重点知识分享
Sep 27 PHP
CI框架入门之MVC简单示例
Nov 21 #PHP
php_pdo 预处理语句详解
Nov 21 #PHP
CI框架表单验证实例详解
Nov 21 #PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 #PHP
静态html文件执行php语句的方法(推荐)
Nov 21 #PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
Nov 21 #PHP
浅谈php中的访问修饰符private、protected、public的作用范围
Nov 20 #PHP
You might like
用定制的PHP应用程序来获取Web服务器的状态信息
2006/10/09 PHP
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
一个php Mysql类 可以参考学习熟悉下
2009/06/21 PHP
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
php简单实现发送带附件的邮件
2015/06/10 PHP
Symfony查询方法实例小结
2017/06/28 PHP
PHP处理bmp格式图片的方法分析
2017/07/04 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
Jquery 在页面加载后执行的几种方式
2014/03/14 Javascript
判断数组的最佳方法(推荐)
2016/10/11 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
vue v-on监听事件详解
2017/05/17 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
Python程序控制语句用法实例分析
2020/01/14 Python
Python 中@property的用法详解
2020/01/15 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
python要安装在哪个盘
2020/06/15 Python
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
linux系统都有哪些运行级别
2016/03/26 面试题
不假外出检讨书
2014/01/27 职场文书
能源工程专业应届生求职信
2014/03/01 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
社区综治工作汇报
2014/10/27 职场文书
写给女朋友的检讨书
2015/05/06 职场文书
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技