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 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
Jun 03 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
May 10 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
Jun 19 PHP
PDO预处理语句PDOStatement对象使用总结
Nov 20 PHP
php实现XSS安全过滤的方法
Jul 29 PHP
前端必学之PHP语法基础
Jan 01 PHP
php英文单词统计器
Jun 23 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
Nov 07 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
Feb 28 PHP
Yii支持多域名cors原理的实现
Dec 05 PHP
PHP实现一个轻量级容器的方法
Jan 28 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批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
PHP操作Memcache实例介绍
2013/06/14 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
Javascript之String对象详解
2016/06/08 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
React组件refs的使用详解
2018/02/09 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
Python中正则表达式的详细教程
2015/04/30 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
浅谈Python_Openpyxl使用(最全总结)
2019/09/05 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
什么是makefile? 如何编写makefile?
2012/08/08 面试题
村级换届选举方案
2014/05/10 职场文书
团日活动总结报告
2014/06/25 职场文书
甘南现象心得体会
2014/09/11 职场文书
简历自我评价模板
2015/03/11 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书
MySQL 自定义变量的概念及特点
2021/05/13 MySQL
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android