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 setcookie设置Cookie用法(及设置无效的问题)
Jul 13 PHP
php页面缓存ob系列函数介绍
Oct 18 PHP
PHP自定义大小验证码的方法详解
Jun 07 PHP
PHP上传图片进行等比缩放可增加水印功能
Jan 13 PHP
php控制文件下载速度的方法
Mar 24 PHP
php获取json数据所有的节点路径
May 17 PHP
Symfony2在Nginx下的配置方法图文教程
Feb 04 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
Mar 11 PHP
Yii编程开发常见调用技巧集锦
Jul 15 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
Nov 03 PHP
php获取excel文件数据
Apr 21 PHP
PHP实现APP微信支付的实例讲解
Feb 10 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获取mysql版本的几种方法小结
2008/03/25 PHP
php mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
XP折叠菜单&amp;仿QQ2006菜单
2006/12/16 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
JsRender实用入门教程
2014/10/31 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
angular 服务随记小结
2019/05/06 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
iview的table组件自带的过滤器实现
2019/07/12 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
[03:08]迎霜节狂欢!2018年迎霜节珍藏Ⅰ一览
2018/12/25 DOTA
python和opencv实现抠图
2018/07/18 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
Python绘制数码晶体管日期
2021/02/19 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
介绍一下linux的文件权限
2014/07/20 面试题
王老吉广告词
2014/03/20 职场文书
团代会宣传工作方案
2014/05/08 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
学历证明范文
2015/06/16 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏