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 19 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
一个基于phpQuery的php通用采集类分享
Apr 09 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
thinkPHP分组后模板无法加载问题解决方法
Jul 12 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
php自定义函数转换html标签示例
Sep 29 PHP
Zend Framework数据库操作技巧总结
Feb 18 PHP
Laravel5.7 数据库操作迁移的实现方法
Apr 12 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 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 新手入门教程
2009/08/03 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
Javascript中的相等与不等运算
2010/04/25 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
nodejs初始化init的示例代码
2018/10/10 NodeJs
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
JavaScript中继承原理与用法实例入门
2020/05/09 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
python实现二维插值的三维显示
2018/12/17 Python
python制作朋友圈九宫格图片
2019/11/03 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
Python 存取npy格式数据实例
2020/07/01 Python
allbeauty美国:英国在线美容店
2019/03/11 全球购物
食堂标语大全
2014/06/11 职场文书
委托证明范本
2014/11/25 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang