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的特殊设置
Oct 09 PHP
php引用地址改变变量值的问题
Mar 23 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
UTF-8正则表达式如何匹配汉字
Aug 03 PHP
PHP MVC框架skymvc支持多文件上传
May 26 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
Jan 16 PHP
PHP实现合并两个排序链表的方法
Jan 19 PHP
yii2实现Ueditor百度编辑器的示例代码
Nov 02 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
Jan 15 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脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
php实现多城市切换特效
2015/08/09 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
理解javascript异步编程
2016/01/27 Javascript
animate 实现滑动切换效果【实例代码】
2016/05/05 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
2017/07/17 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
vue+element-ui动态生成多级表头的方法
2018/08/28 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
Python中Continue语句的用法的举例详解
2015/05/14 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
英国在线泳装店:Simply Swim
2019/05/05 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
商务英语专业自荐信
2013/10/14 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
Java实现聊天机器人完善版
2021/07/04 Java/Android
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL